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__

09-05 04:05