【发布时间】:2016-08-16 13:00:51
【问题描述】:
来自 C 编程语言,作者:KRC
给定定义
#define tempfile(dir) #dir "%s"宏调用 tempfile(/usr/tmp) 产生
"/usr/tmp" "%s"随后将被连接成一个字符串。
最后两个字符串的连接遵循什么规则?
是预处理中的宏规则,还是编译中的 C 中的字符串规则?
【问题讨论】:
标签: c
来自 C 编程语言,作者:KRC
给定定义
#define tempfile(dir) #dir "%s"宏调用 tempfile(/usr/tmp) 产生
"/usr/tmp" "%s"随后将被连接成一个字符串。
最后两个字符串的连接遵循什么规则?
是预处理中的宏规则,还是编译中的 C 中的字符串规则?
【问题讨论】:
标签: c
这是根据翻译的一个阶段发生的。
引用C11,第 §5.1.1.2/p1.4 和 p1.6 章,(按顺序)
预处理指令被执行,宏调用被扩展,并且 _Pragma 一元运算符表达式被执行。 [...]
和
连接相邻的字符串文字标记。
【讨论】: