在预处理器指令中使用除 # 以外的其他字符

Use another char than # in preprocessor directives

有没有办法在定义预处理器指令时使用 # 以外的其他字符?示例:

而不是:

#if 1
foo
#endif

使用?,例如:

?if 1
foo
?endif

存在用于替换某些字符的三字母序列。特别是,# 字符可以替换为 ??=。所以下面的代码是有效的:

??=if 1
foo
??=endif

但是您不能随意替换。

您有两个选择:

  • 三字母组:??=if 1
  • 二合字母:%:if 1

这两个都是 100% 标准 C,但同时被认为是非常糟糕的做法。然而,主流编译器倾向于警告三字母而不是二字母,所以二字母可能是较小的邪恶。