相关疑难解决方法(0)

在C中强制执行强类型检查(typedefs的类型严格性)

有没有办法对相同类型的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的重叠类型的例子一样,它可以挽救生命.

c typedef typechecking strong-typing

35
推荐指数
6
解决办法
1万
查看次数

标签 统计

c ×1

strong-typing ×1

typechecking ×1

typedef ×1