是否可以#define两个单词到一个表达式,而不只是一个单词?

oma*_*tai 12 c c++ c-preprocessor

如果我想替换所有出现的byteunsigned char,简单的#define将做到这一点.有没有办法用反向做#define?使用单引号或双引号对两个单词进行分组不起作用,也不使用反斜杠转义它们之间的空格.它甚至可能吗?

pax*_*blo 6

#define语句中的标识符不能包含空格,至少在C中.

C11标准的控制部分(尽管在早期迭代中基本相同)是6.10.3 Macro replacement /9-10(结合如下):

形式为

# define identifier replacement-list new-line
# define identifier lparen identifier-listopt ) replacement-list new-line
# define identifier lparen ... ) replacement-list new-line
# define identifier lparen identifier-list , ... ) replacement-list new-line

blah blah blah的预处理指令......

identifier(如在这些指令使用)中所指定6.4.2的相同的标准的和没有列出空格字符作为允许的一个.


Hsi*_*hih 5

#define语法由.定义

#define identifier token-string
Run Code Online (Sandbox Code Playgroud)

所以中间部分应该是一个标识符,不能包含空格.