字符串文字可以与 char* 连接吗?

Can a string literal be concatenated with a char*?

我知道在 C 中相邻的字符串文字是连接在一起的。我想知道,相邻的字符串文字是否与 char*s 连接?

我问这个问题的原因是因为我想将两个字符串的串联传递给 perror(),而其中一个字符串是事先不知道的,所以我必须使用 char*.

perror("error opening " "file.txt");  // string literals are concatenated

char* filename = "file.txt";  // or some other file
perror("error opening " filename);    // will this work?

没有。字符串文字的连接在翻译(编译)期间执行。您请求的操作必须在程序执行时在程序内完成。没有自动执行的规定;您必须编写代码来为结果字符串分配 space 并执行连接。

没有。连接相邻的字符串文字是编译器的一项功能,它将相邻的字符串文字视为一个字符串文字,以帮助编码人员编写可读代码(以防大字符串文字不能很好地放在一行中)。

C 作为一种语言没有串联运算符,最接近它的是函数 (strncatstrcatstrcpymemcpy ).