有没有办法强制对相同类型的 typedef 进行显式转换?我必须处理 utf8,有时我会对字符数和字节数的索引感到困惑。所以这很好...
有没有办法强制对相同类型的 typedef 进行显式转换?我必须处理 utf8,有时我会对字符数和字节数的索引感到困惑。所以最好有一些 typedef:
typedef unsigned int char_idx_t;
typedef unsigned int byte_idx_t;
另外,您还需要在它们之间进行显式转换:
char_idx_t a = 0;
byte_idx_t b;
b = a; // compile warning
b = (byte_idx_t) a; // ok
我知道 C 中不存在这样的功能,但也许你知道一个技巧或一个编译器扩展(最好是 gcc)可以做到这一点。
编辑 我仍然不太喜欢匈牙利表示法。由于项目编码约定,我无法将其用于这个问题,但我现在在另一个类似的情况下使用它,其中类型相同,含义非常相似。而且我必须承认:它很有帮助。我永远不会去用 \'i\' 开头声明每个整数,但正如 Joel 的重叠类型示例一样,它可以救命。