答案 0 :(得分:4)
#ifndef _WIN32
告诉预处理器在其下方包含代码,直到相应的#endif
,如果_WIN32未定义。
#ifndef _WIN32
#define STR1 "Some String"
#endif
如果未定义_WIN32,则将包含宏STR1,如果定义了_WIN32,则不会包括宏STR1。请注意_WIN32是系统定义的宏。通常,不适用于Windows平台或通用且无法在Windows中编译的代码放在#ifndef _WIN32宏下。
MSDN page表示默认情况下会为所有32位和64位版本定义_WIN32。
答案 1 :(得分:0)
此指令表示“_WIN32宏定义时不包含此代码”。 如果仅在编译Win32时定义宏_WIN32,则此代码“指示cpp省略32位Windows平台的代码”。
答案 2 :(得分:0)
这是一个预处理器指令。它被称为编译常量。
如果未定义编译常量(例如,_WIN32),编译器将考虑#ifndef下的代码段。我相信上述说明可以帮助您解决查询问题。
更具体地说,
#ifndef _WIN32
...
...
...
some code
...
...
...
#endif
如果您还没有定义_WIN32(例如#define _WIN32),那么#if ...#endif中的代码将被编译。
希望它有所帮助。