字符串文字跨越C中的多行

时间:2016-01-25 19:23:08

标签: c syntax

我在开源库中遇到了以下类型的字符串文字,这是我以前从未见过的。事实证明ab是相同的。我很困惑为什么a的语法是正确的? C预处理器是否自动连接两个字符串?

#include<stdio.h>

int main()
{
const char a[] =
"123\r\n"
"123\r\n";

const char b[] = "123\r\n123\r\n";

printf(a);
printf(b);
}

2 个答案:

答案 0 :(得分:1)

来自section 5.1.1.2.6 of the C99 standard

  

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

所以你的假设是正确的。无论你何时连续看到字符串文字,编译器都会隐式连接它们。

答案 1 :(得分:0)

宣言

const char a[] =
"123\r\n"
"123\r\n";  

相当于

const char a[] = "123\r\n123\r\n";