【发布时间】:2012-10-17 21:13:23
【问题描述】:
我找不到这样做的方法,但是是否有 GCC/LLVM 的编译器标志,我可以在其中得到它来警告我:
typedef float distance_feet_t;
typedef float distance_meters_t;
void shouldWarnMe ( void )
{
distance_feet_t feet = 10.0f;
distance_meters_t meters = 20.0f;
/* this should generate a warning */
distance_meters_t total = meters + feet;
}
本质上,我想重新定义变量类型,这样如果我开始混合它们,编译器就会警告我缺少演员表。
我试过 -Wall: 没有警告。
有一些方法可以在不使用 typedef 的情况下解决这个问题。但是问题是,有没有一种方法可以使用所描述的 typedef 来做到这一点?
【问题讨论】:
-
简单地说,不:typedefs 只是宏之上的一个级别,只是现有类型的别名。
-
FWIW,在带有 Boost 的 C++ 中,对于给出的特定示例,问题已由 Boost.Units 处理。
-
stackoverflow.com/questions/30931720/…可能对你有帮助(有sparse的参考)