unixpreproc.cpp
#ifdef unix
#warning "unix is defined"
#endif
#ifdef __unix__
#warning "__unix__ is defined"
#endif
void main() {}
使用Intel C++编译器19.0.3:
icpc -o unixpreproc unixpreproc.cpp
显示同时定义了unix
和__unix__
宏但
icpc -std=c++11 -o unixpreproc unixpreproc.cpp
显示仅定义了__unix__
。这是故意的吗?它是not documented in the Intel compiler manual。 最佳答案
是的,这是非常故意的。这在GCC手册中进行了解释(在这方面其行为与icpc
相同):
参见https://gcc.gnu.org/onlinedocs/cpp/System-specific-Predefined-Macros.html-std=c++11
选项要求严格遵循。 -std=gnu++11
选项是非严格等效项,它将定义unix
和__unix__
。