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

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

概述我的代码看起来像这样: #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)) 我的代码看起来像这样:

#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 sizeof()差异IntelliSense与编译时的区别全部内容,希望文章能够帮你解决c – Visual Studio sizeof()差异IntelliSense与编译时的区别所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1216947.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存