如何使用带有 OR 条件的#ifdef?

Posted

技术标签:

【中文标题】如何使用带有 OR 条件的#ifdef?【英文标题】:how to use #ifdef with an OR condition? 【发布时间】:2012-03-29 18:27:12 【问题描述】:

很抱歉提出非常基本的问题。我想在#ifdef 指令中设置 OR 条件。? 怎么做 ? 我试过了

#ifdef LINUX | android
...
..
#endif 

没用?正确的方法是什么?

【问题讨论】:

如果您也在 C 条件句中使用 | 表示“或”,那么您做错了。 因此访问 SO 以了解如何正确地做到这一点。 【参考方案1】:

#ifdef 中的 OR 条件

#if defined LINUX || defined ANDROID
// your code here
#endif /* LINUX || ANDROID */

或-

#if defined(LINUX) || defined(ANDROID)
// your code here
#endif /* LINUX || ANDROID */

以上两种都是一样的,你用哪一种就看你的口味了。


P.S.#ifdef 只是#if defined 的简写形式,但不支持复杂条件。


进一步-

和:#if defined LINUX && defined ANDROID 异或:#if defined LINUX ^ defined ANDROID

【讨论】:

【参考方案2】:

像这样

#if defined(LINUX) || defined(ANDROID)

【讨论】:

以上是关于如何使用带有 OR 条件的#ifdef?的主要内容,如果未能解决你的问题,请参考以下文章

#if 和 #ifdef 条件编译注意

如何在#ifdef 语句中使用/避免#pragma

预处理三剑客(宏定义,文件包含和条件编译)之第三种——条件编译。 #ifndef #ifdef

我们可以在 INI 文件中使用 #ifdef 宏,或者我们如何限制 INI 文件中写入的设置的编译?

如何在带有 javascript 条件的媒体查询中使用 css?

C++中#if #ifdef 的作用