在我的代码中,我想确保sizeof(a) == sizeof(b)。
第一种方法是让预处理器进行检查:
#if (sizeof(a) != sizeof(b))
# error sizes don't match
#endif因为fatal error C1017: invalid integer constant expression而不能编译。好吧。明白了。
下一个尝试:
if(sizeof(a) != sizeof(b)){
printf("sizes don't match\n");
return -1;
}这导致了一个警告:warning C4127: conditional expression is constant。
现在我被困住了。是否有一种无警告和无错误的方法来确保两个结构a和b具有相同的大小?
编辑:编译器是Visual 2005,警告级别设置为4。
发布于 2011-10-05 06:38:43
虽然可以与编译器玩捉迷藏,在编译器看不到的地方隐藏常量条件,但这并不是抑制警告的最佳方法。对于下一个要维护代码的人来说,这只会使代码显得不必要的模糊。
如果需要禁止编译器警告,请明确说明。在Visual 2005中,最好使用语用:
http://msdn.microsoft.com/en-us/library/2c8f766e(v=vs.80).aspx
https://stackoverflow.com/questions/7657362
复制相似问题