有没有办法对相同类型的typedef强制执行显式转换?我要处理utf8,有时我会对字符数和字节数的索引感到困惑.所以有一些typedef很好:
typedef unsigned int char_idx_t;
typedef unsigned int byte_idx_t;
Run Code Online (Sandbox Code Playgroud)
除此之外,您需要在它们之间进行显式转换:
char_idx_t a = 0;
byte_idx_t b;
b = a; // compile warning
b = (byte_idx_t) a; // ok
Run Code Online (Sandbox Code Playgroud)
我知道C中不存在这样的功能,但也许你知道一个技巧或编译器扩展(更好的gcc).
编辑 我仍然不喜欢一般的匈牙利符号.由于项目编码惯例,我无法将它用于此问题,但我现在在另一个类似的情况下使用它,其中类型相同且含义非常相似.我不得不承认:它有所帮助.我永远不会用起始"i"来声明每个整数,但是就像Joel的重叠类型的例子一样,它可以挽救生命.