3

可能重复:
#ifdef 和 #ifndef 的作用

#ifndef _WIN32 

指示 cpp 省略 32 位 windows 平台的代码?

4

3 回答 3

6

#ifndef _WIN32#endif如果 _WIN32 未定义,则告诉预处理器将代码包含在它下面,直到对应的 _WIN32 。

#ifndef _WIN32
#define STR1 "Some String"
#endif

如果 _WIN32 未定义,宏 STR1 将被包括在内,如果 _WIN32 被定义,则不会包括在内。请注意,_WIN32 是系统定义的宏。通常,不适用于 Windows 平台或通用且无法在 Windows 中编译的代码放在此类 #ifndef _WIN32 宏下。

MSDN 页面说默认情况下将为所有 32 位和 64 位版本定义 _WIN32。

于 2012-07-13T08:51:04.947 回答
1

该指令的意思是“在定义 _WIN32 宏时不包含此代码”。如果仅在为 Win32 编译时定义宏 _WIN32,则此代码“指示 cpp 省略 32 位 windows 平台的代码”。

于 2012-07-13T08:51:46.530 回答
0

好吧,它是一个预处理器指令。它被称为编译常量。

如果编译常量(如_WIN32)没有定义,编译器会考虑那些#ifndef 下的那段代码。

我相信上述解释将帮助您解决您的查询。

更加具体,

#ifndef _WIN32

...
...
...
some code
...
...
...

#endif

这里如果你没有定义_WIN32(比如#define _WIN32),那么#if...#endif中的代码将被编译。

希望能帮助到你。

于 2012-07-13T10:27:00.197 回答