【问题标题】:Concatenation of two strings into one in C [duplicate]在C中将两个字符串连接成一个[重复]
【发布时间】:2016-08-16 13:00:51
【问题描述】:

来自 C 编程语言,作者:KRC

给定定义

#define tempfile(dir)    #dir "%s" 

宏调用 tempfile(/usr/tmp) 产生

"/usr/tmp" "%s" 

随后将被连接成一个字符串。

最后两个字符串的连接遵循什么规则?

是预处理中的宏规则,还是编译中的 C 中的字符串规则?

【问题讨论】:

    标签: c


    【解决方案1】:

    这是根据翻译的一个阶段发生的。

    引用C11,第 §5.1.1.2/p1.4 和 p1.6 章,(按顺序

    预处理指令被执行,宏调用被扩展,并且 _Pragma 一元运算符表达式被执行。 [...]

    连接相邻的字符串文字标记。

    【讨论】:

    • 我要补充一点,预处理在第 4 阶段结束时结束,并在第 6 阶段进行连接。此外,它是第 1 段的列表项 6,而不是第 6 段。
    猜你喜欢
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 2022-01-13
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多