假设我们将以下内容传递给gcc
的预处理器:
#define REM(...) __VA_ARGS__
#define PAIR(x) REM x
PAIR((a)b)
它将PAIR((a)b)
扩展为a b
。这是怎么发生的?我很困惑REM
没有使用括号而x
没有被回应......
答案 0 :(得分:3)
当你写:
PAIR((a)b)
给定定义
PAIR(x) REM x
表示x = (a)b
。所以,我们可以将右侧写为
REM (a)b
正确?
现在REM(a)
仅为a
,因此REM (a)b
只是a b
(除非您明确使用令牌粘贴,否则令牌会被空格分隔。)