43

我搜索了该网站,但没有找到我正在寻找的答案,所以这里是一个非常快速的问题。

我正在尝试做这样的事情:

#ifdef _WIN32 || _WIN64
     #include <conio.h>
#endif

我怎么能做这样的事情?我知道 _WIN32 是为 32 位和 64 位窗口定义的,所以对于 Windows 检测我都可以。我更感兴趣的是我是否可以将这样的逻辑运算符与预处理器指令一起使用,如果可以,如何使用,因为上述方法不起作用。

用 gcc 编译我得到:

警告:#ifdef 指令末尾的额外标记,它基本上只接受第一个 MACRO 而忽略其余部分。

4

4 回答 4

67

尝试:

#if defined(_WIN32) || defined(_WIN64)
// do stuff
#endif

定义的宏测试是否定义了名称,并允许您将逻辑运算符应用于结果。

于 2009-06-08T16:20:10.463 回答
7

您必须使用#if特殊运算符defined

于 2009-06-08T16:22:16.440 回答
4

我认为应该可以这样:

#if defined block1 || defined block2 /*or any other boolean operator*/
   /*Code*/
#endif

更多信息在这里

于 2009-06-08T16:21:59.233 回答
1

使用定义:

#if defined(A) || defined(B)
    #include <whatever.h>
#endif
于 2009-06-08T16:22:23.460 回答