以下代码编译时没有问题:
int main() {
printf("Hi" "Bye");
}
然而,这并不能编译:
int main() {
int test = 0;
printf("Hi" (test ? "Bye" : "Goodbye"));
}
这是什么原因呢?
以下代码编译时没有问题:
int main() {
printf("Hi" "Bye");
}
然而,这并不能编译:
int main() {
int test = 0;
printf("Hi" (test ? "Bye" : "Goodbye"));
}
这是什么原因呢?
根据C标准(5.1.1.2翻译阶段)
1翻译语法规则的优先顺序由
- 相邻的字符串文字标记被连接起来.
只有在那之后
- 分隔标记的空白字符不再重要.每个
在这个建筑中
"Hi" (test ? "Bye" : "Goodbye")
没有相邻的字符串文字标记.所以这个 struct 是无效的.