在定义预处理器指令时,是否有方法使用另一个字符而不是#
?例子:
代替:
#if 1
foo
#endif
使用?
,例如:
?if 1
foo
?endif
您有两个选择:
- Trigraphs:
??=if 1
有向图:
%:if 1
这两个都是100%标准的C语言,但同时也被认为是非常糟糕的做法。然而,主流编译器倾向于警告三向图而不是有向图,所以有向图可能是比较好的选择。
存在用于替换某些字符的三字符序列。特别是,#
字符可以替换为??=
。所以下面的代码是有效的:
??=if 1
foo
??=endif
但是你不能随意替换。