c – Visual Studio sizeof()差异IntelliSense与编译时的区别
作者:互联网
我的代码看起来像这样:
#include <stdio.h>
#pragma pack(1)
class MyClass
{
bool a;
bool b;
int c;
char d[3];
bool e[4];
};
#pragma pack()
int main()
{
printf("sizeof(MyClass)=%d\n", sizeof(MyClass));
return 0;
}
输出是:
sizeof(MyClass)=13
但当我“悬停”在sizeof(MyClass)上时,我得到:
这不是一个大问题,但我正在尝试实现编译时断言,但它不起作用(获得红色下划线):
任何人都知道如何解决这个问题?
解决方法:
这不是编译时和运行时之间的区别;它是您的编译器和IDE的“intellisense”之间的区别,后者似乎不支持/识别#pragma pack指令.
忽略它.大小是13.
既然你可以实际构建你的程序,你知道编译时断言成功,尽管有“红线”.
在断言之前添加注释可能是值得的,并解释说Visual Studio 2015的用户会在IDE中看到以下断言的错误否定.
您可能还希望在Microsoft Connect上引发错误,如果还没有.
标签:c,visual-studio-2015,visual-c,visual-studio,intellisense 来源: https://codeday.me/bug/20190727/1557029.html