2016-01-25 47 views
0

我在開源庫中遇到了以下類型的字符串字面值,這是我以前從未見過的。事實證明,ab是一樣的。我很困惑爲什麼a的語法是正確的? C預處理器是否自動連接兩個字符串?跨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); 
} 

回答

1

section 5.1.1.2.6 of the C99 standard

相鄰字符串文字令牌是連接在一起。

所以你的假設是正確的。任何您連續看到字符串文字的地方,編譯器都會隱式地連接它們。

+0

感謝。很高興知道。在某些情況下非常方便。 – qweruiop

0

特聲明

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

相當於

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