【问题标题】:In visual studio 2010 under #ifdefine WINDOWS statements are not compiled在Visual Studio 2010 下#ifdefine WINDOWS 语句未编译
【发布时间】:2014-04-09 04:26:19
【问题描述】:
我在 Visual Studio 2010 的一个 dll 项目中写了一个小的条件语句,如下所示。
#ifndef WINDOWS
int a=10;
#endif
从上面的条件语句中,对于windows操作系统,这个语句(int a=10)不应该被包含进来。但是这个语句(int a=10)在编译的时候也包含进来了。
我找不到问题。
【问题讨论】:
标签:
c
windows
visual-studio-2010
【解决方案1】:
由于没有在任何地方定义 WINDOWS,因此将包含该变量。没有这样的预定义宏。
试试#ifndef _WIN32 或#ifndef __WIN32。
【解决方案2】:
用于识别操作系统的宏由相关编译器定义。
引用64-Bit Compiler:
预定义宏
编译器定义了以下宏来识别平台。
Macro Meaning
_WIN64 A 64-bit platform.
_WIN32 A 32-bit platform. This value is also defined by the 64-bit compiler for backward compatibility.
_WIN16 A 16-bit platform.
以下宏是特定于架构的。
Macro Meaning
_M_IA64 A 64-bit Intel platform.
_M_IX86 A 32-bit Intel platform.