如何在#ifdef 中添加“或”条件

Posted

技术标签:

【中文标题】如何在#ifdef 中添加“或”条件【英文标题】:How to add a 'or' condition in #ifdef 【发布时间】:2011-03-01 05:50:14 【问题描述】:

如何在 #ifdef 中添加“或”条件?

我试过了:

#ifdef CONDITION1 || CONDITION2

#endif

这不起作用。

【问题讨论】:

【参考方案1】:
#if defined(CONDITION1) || defined(CONDITION2)

应该可以。 :)

#ifdef 打字少了一点,但不适用于更复杂的条件

【讨论】:

@iEngineer #elif defined(CONDITION1) || defined(CONDITION2)? 如何在多个条件下使用#ifndef? @user3017748 #if !defined(CONDITION1) || !defined(CONDITION2) @user3017748,如果您希望在两个条件中的一个定义的情况下发生某些事情,那么 jalf 的评论就有效。如果您希望在两者都未定义的情况下发生这种情况,您可以使用 AND:#if !defined(CONDITION1) && !defined(CONDITION2) 这不需要#endif吗?【参考方案2】:

可以用这个-

#if defined CONDITION1 || defined CONDITION2
//your code here
#endif

这也是一样的-

#if defined(CONDITION1) || defined(CONDITION2)
//your code here
#endif

进一步-

和:#if defined CONDITION1 && defined CONDITION2 异或:#if defined CONDITION1 ^ defined CONDITION2 而不是:#if defined CONDITION1 && !defined CONDITION2

【讨论】:

【参考方案3】:

对于维护严格的列限制,我真的是强迫症,而不是“\”的粉丝 续行,因为你不能在它后面添加评论,所以这是我的方法。

//|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|//
#ifdef  CONDITION_01             //|       |//
#define             TEMP_MACRO   //|       |//
#endif                           //|       |//
#ifdef  CONDITION_02             //|       |//
#define             TEMP_MACRO   //|       |//
#endif                           //|       |//
#ifdef  CONDITION_03             //|       |//
#define             TEMP_MACRO   //|       |//
#endif                           //|       |//
#ifdef              TEMP_MACRO   //|       |//
//|-  --  --  --  --  --  --  --  --  --  -|//

printf("[IF_CONDITION:(1|2|3)]\n");

//|-  --  --  --  --  --  --  --  --  --  -|//
#endif                           //|       |//
#undef              TEMP_MACRO   //|       |//
//|________________________________________|//

【讨论】:

哦,真恶心……

以上是关于如何在#ifdef 中添加“或”条件的主要内容,如果未能解决你的问题,请参考以下文章

自动删除 Delphi IFDEf 编译器指令

如何根据基于数据框的两个或多个条件在 MultiIndex 数据框中添加新行

C++中#if #ifdef 的作用

C语言预处理条件语句的 与或运算

如何在spark sql lag函数中添加if或case条件

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