defined (VARIABLE) von MSVC nicht korrekt ausgewertet?
Den folgenden Code ausführen
#include <iostream>
#define FOO
#define BAR defined(FOO)
int main() {
#if BAR
std::cout << "BAR enabled!" << std::endl;
#else
std::cout << "BAR disabled!" << std::endl;
#endif
return 0;
}
imVisual Studio zeigt @ Bar disabled!
, während derselbe Code in @ ausgeführt wi gcc oder clang zeigt @ Bar enabled!
.
Ist das ein Fehler im Microsoft Compiler? Was ist laut Norm richtig?