10901:相邻字符串字面量拼接
题目
给出相邻字符串字面量拼接示例,并说明拼接发生的阶段。
解析
c
#include <stdio.h>
int main(void) {
static const char message[] =
"C "
"string "
"joining";
_Static_assert(sizeof message == 17, "unexpected size");
puts(message);
return 0;
}1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
输出:
text
C string joining1
解析
相邻字符串字面量在翻译期被连接成一个字符串字面量。本例等价于:
c
static const char message[] = "C string joining";1
这不是运行期的 strcat 调用,不需要动态存储,也不会重复保留各片段之间的末尾空字符。最终数组只在完整内容末尾有一个空字符。