如何修复错误c2118:负下标
再次,将32位应用程序移植到64位。我在下面提到的C_ASSERT语句中得到负的下标错误。
C_ASSERT (sizeof(somestruct) == some#define);
我还阅读了http://support.microsoft.com/kb/68475文章,但不知道在这种情况下我是否知道如何修复它。
感谢帮助。
提前致谢。
没有找到相关结果
已邀请:
1 个回复
烫珊
宏的定义是这样的:
这是一个编译时断言:如果编译时表达式
为真,那么这会扩展为类似
声明类型名称
是类型
(1ѭ7array的数组)的别名。严格地说,如果表达式
为假,则扩展为
这是一个编译器错误,因为你不能有一个负数大小的数组类型。 因此,你的问题是表达式
是假的,即
的大小不是你的代码所期望的。你需要解决这个问题 - 要么改变
的大小,要么改变
的值,确保这不会破坏任何东西。