我在哪里可以找到组合字符串的C规范?

q2v*_*ven 3 c string specifications

当我阅读Xtables的源代码时,我发现了类似的东西.

pr_info("SRC=" NIP6_FMR "DST=" NIP6_FMR "\n",
        NIP6(iph->saddr), NIP6(iph->daddr));
Run Code Online (Sandbox Code Playgroud)

我想知道为什么字符串作为组合字符串处理,以及效果是由pr_info宏引起的,还是C规范的一部分.所以,我编写了这段代码并发现它是C规范中定义的行为.

int main(void) {
    char a[] = "aaa" "bb";
    printf("%s\n", a);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

规范在哪里定义?我不知道如何搜索规范以及用于表达行为的单词.

use*_*738 8

6.4.5p8开始的一个例子: -

这对相邻的字符串文字

"\x12" "3"生成一个包含两个字符的单个字符串文字,其值为'\x12''3',因为转义序列在相邻的字符串文字串联之前被转换为执行字符集的单个成员.

此处也在6.4.5p5中说明

在转换阶段6中,由任何相邻字符序列和相同前缀字符串文字标记指定的多字节字符序列被连接成单个多字节字符序列.

另外,在第5.1.1.2节"翻译阶段"中

  1. 相邻的字符串文字标记是连接的.

强调我的