Visual Studio sizeof() IntelliSense 与编译时的区别
Visual Studio sizeof() difference IntelliSense vs. compile-time
我的代码如下所示:
#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
但是当我 "hover" 超过 sizeof(MyClass)
我得到:
这本来不是什么大问题,但我正在尝试实施编译时断言,但它不起作用(出现红色下划线):
有人知道如何解决这个问题吗?
这不是编译时和运行-时的区别;这是你的编译器和你的 IDE 的 "intellisense" 之间的区别,后者似乎不是 support/recognise #pragma pack
指令。
忽略它。尺码是13.
由于您可以实际构建您的程序,您知道编译时断言成功,尽管 "red line"。
可能值得在该断言之前添加评论,解释 Visual Studio 2015 的用户将在他们的 IDE 中看到以下断言的假阴性。
您可能还希望在 Microsoft Connect 上提出一个错误,如果还没有的话。
我的代码如下所示:
#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
但是当我 "hover" 超过 sizeof(MyClass)
我得到:
这本来不是什么大问题,但我正在尝试实施编译时断言,但它不起作用(出现红色下划线):
有人知道如何解决这个问题吗?
这不是编译时和运行-时的区别;这是你的编译器和你的 IDE 的 "intellisense" 之间的区别,后者似乎不是 support/recognise #pragma pack
指令。
忽略它。尺码是13.
由于您可以实际构建您的程序,您知道编译时断言成功,尽管 "red line"。
可能值得在该断言之前添加评论,解释 Visual Studio 2015 的用户将在他们的 IDE 中看到以下断言的假阴性。
您可能还希望在 Microsoft Connect 上提出一个错误,如果还没有的话。