加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – Visual Studio sizeof()差异IntelliSense与编译时的区别

发布时间:2020-12-16 09:59:57 所属栏目:百科 来源:网络整理
导读:我的代码看起来像这样: #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)=%dn",sizeof(MyClass)); return 0;} 输出是: sizeof(MyClass)=13 但当我“悬
我的代码看起来像这样:

#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)=%dn",sizeof(MyClass));
  return 0;
}

输出是:

sizeof(MyClass)=13

但当我“悬停”在sizeof(MyClass)上时,我得到:

enter image description here

这不是一个大问题,但我正在尝试实现编译时断言,但它不起作用(获得红色下划线):

enter image description here

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

解决方法

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

忽略它.大小是13.

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

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

您可能还希望在Microsoft Connect上引发错误,如果还没有.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读