簡體   English   中英

致命錯誤C1017:使用“#if(false)”時無效的整數常量表達式

[英]fatal error C1017: invalid integer constant expression when using “#if (false)”

有以下代碼在Linux下工作,但給MSVS錯誤

#if (false)
....
#endif

錯誤是:致命錯誤C1017:無效的整數常量表達式

我在微軟的網站上發現了這個報告: http//msdn.microsoft.com/en-us/library/h5sh3k99.aspx

雖然與我的情況相比,那里描述的信息略有不同,因為我沒有使用“#define”

所以我的問題是:

  1. 有沒有辦法讓它在不改變代碼的情況下為MSVC工作?
  2. 如果必須更新代碼,那么這種情況的最佳解決方案是什么?

看起來您的MS編譯器版本不支持false作為內置常量。 這並不奇怪,因為微軟在支持C和C ++標准方面有着不穩定的記錄。

在不更改代碼的情況下完成此工作的一種方法是將命令行參數傳遞給編譯器,將false定義為0,將true定義為1:

-Dfalse=0 -Dtrue=1

有沒有辦法讓它在不改變代碼的情況下為MSVC工作?

並不是的。 標准禁止為false定義一個宏,原因很充分,[macro.names] / 2:

翻譯單元不得#define#undef名稱與關鍵字詞匯相同,與表3中列出的標識符或7.6中描述的屬性標記相同

我沒有看到任何其他方式。

如果必須更新代碼,那么這種情況的最佳解決方案是什么?

0替換為false

暫無
暫無

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

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