是否有一个 C 预处理器可以替换连续的 else 和 ifdef 指令?

问题描述 投票:0回答:1

我有一段代码,看起来像这样,

#ifdef A
  printf("A");
#else
  #ifdef B
    printf("B");
  #endif
#endif

else
ifedef B
可以按照
this
替换为 elif defined B。 但是,C语言中不是有
elifdef
指令吗?


注意:

elif B
不适合这个,它需要一个表达式;其中
A
B
是编译时开关,没有为它们定义值。

c c-preprocessor preprocessor preprocessor-directive
1个回答
0
投票

指令是

#elifdef
(也可能是
#elifndef
),从 C23 开始。根据cppreference,它们似乎已经在 GCC 12 和 Clang 13 中实现,是在 N2645 中提出的,也是工作草案 N3096 的一部分。

#ifdef A
  printf("A");
#elifdef B
  printf("B");
#endif
© www.soinside.com 2019 - 2024. All rights reserved.