在下面的非常簡單的C程序中,預期的編譯器錯誤是什麼? GCC是給我1,而MSVC 2013年給了我2對已設置爲defined()的結果的宏有什麼期望值?
#define foo
#define bar (defined(foo))
#if bar
#error 1
#else
#error 2
#endif
我的問題是希望同樣簡單:
- 什麼是C時的參數說一下的價值定義()?我似乎無法找到 找到任何有關將其值設置爲另一個 宏的內容。
- 實際的代碼不是我可以控制的,並且「#if bar」會在整個地方使用。什麼是最簡單的方式來更改#define,以便在MSVC中#if欄將以「預期」的方式工作?我能想到的唯一辦法就是將其展開:
。
#ifdef foo
#define bar 1
#else
#define bar 2
#endif
我自己測試過,這是bizzare。我無法想象MSVC認爲它在這裏做什麼。 – 2014-12-03 18:20:19