簡體   English   中英

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

但當我“懸停”在sizeof(MyClass)我得到:

在此輸入圖像描述

這不是一個大問題,但我正在嘗試實現編譯時斷言,但它不起作用(獲得紅色下划線):

在此輸入圖像描述

任何人都知道如何解決這個問題?

這不是編譯時和運行時之間的區別; 它是您的編譯器和IDE的“intellisense”之間的區別,后者似乎不支持/識別#pragma pack指令。

忽略它。 大小是13。

既然你可以實際構建你的程序,你知道編譯時斷言成功,盡管有“紅線”。

在斷言之前添加注釋可能是值得的,並解釋說Visual Studio 2015的用戶會在IDE中看到以下斷言的錯誤否定。

您可能還希望在Microsoft Connect上引發錯誤,如果還沒有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM