[英]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”
所以我的問題是:
看起來您的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.