gpt4 book ai didi

c++ - Visual Studio sizeof() 区别 IntelliSense 与编译时

转载 作者:太空狗 更新时间:2023-10-29 20:11:24 25 4
gpt4 key购买 nike

我的代码是这样的:

#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) 上时,我得到:

enter image description here

这本来不是什么大问题,但我正在尝试实现编译时断言,但它不起作用(出现红色下划线):

enter image description here

有人知道如何解决这个问题吗?

最佳答案

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

忽略它。尺寸为 13。

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

可能值得在该断言之前添加注释,解释 Visual Studio 2015 的用户将在他们的 IDE 中看到以下断言的假阴性。

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

关于c++ - Visual Studio sizeof() 区别 IntelliSense 与编译时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33611861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com