可能重复:
#ifdef 和 #ifndef 的作用
做
#ifndef _WIN32
指示 cpp 省略 32 位 windows 平台的代码?
#ifndef _WIN32
#endif
如果 _WIN32 未定义,则告诉预处理器将代码包含在它下面,直到对应的 _WIN32 。
#ifndef _WIN32
#define STR1 "Some String"
#endif
如果 _WIN32 未定义,宏 STR1 将被包括在内,如果 _WIN32 被定义,则不会包括在内。请注意,_WIN32 是系统定义的宏。通常,不适用于 Windows 平台或通用且无法在 Windows 中编译的代码放在此类 #ifndef _WIN32 宏下。
MSDN 页面说默认情况下将为所有 32 位和 64 位版本定义 _WIN32。
该指令的意思是“在定义 _WIN32 宏时不包含此代码”。如果仅在为 Win32 编译时定义宏 _WIN32,则此代码“指示 cpp 省略 32 位 windows 平台的代码”。
好吧,它是一个预处理器指令。它被称为编译常量。
如果编译常量(如_WIN32)没有定义,编译器会考虑那些#ifndef 下的那段代码。
我相信上述解释将帮助您解决您的查询。
更加具体,
#ifndef _WIN32
...
...
...
some code
...
...
...
#endif
这里如果你没有定义_WIN32(比如#define _WIN32),那么#if...#endif中的代码将被编译。
希望能帮助到你。