Visual Studio sizeof()差异IntelliSense与编译时

时间:2015-11-09 14:56:11

标签: c++ visual-studio visual-c++ visual-studio-2015 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

但当我&#34; hover&#34;超过sizeof(MyClass)我得到:

enter image description here

这不是一个大问题,但是我试图实现编译时断言并且它没有工作(获得红色下划线):

enter image description here

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:7)

这不是编译时和运行时之间的区别;它是您的编译器和IDE的“intellisense”之间的区别,后者似乎不支持/识别#pragma pack指令。

忽略它。大小为13。

因为你可以实际构建你的程序,你知道编译时断言成功,尽管有“红线”。

在该断言之前添加注释可能是值得的,并解释说Visual Studio 2015的用户会在他们的IDE中看到以下断言的错误否定。

如果还没有Microsoft Connect,您可能还希望提出一个错误。