definido (VARIÁVEL) não foi avaliado corretamente pelo MSVC?
Executando o seguinte código
#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;
}
noEstúdio visual exibeBar disabled!
, enquanto executa o mesmo código emgcc ouclang exibeBar enabled!
.
Isso é um bug no compilador da Microsoft? O que é correto de acordo com o padrão?