小心遗漏逗号导致的非预期字符串连接
11.12 ID_literal_oddConcat
注意可能导致非预期结果的字符串连接,尤其在初始化列表中,小心逗号被遗漏。
字符串连接的适用场景:
- 字符串过长不便于显示时可将字符串拆成多个子串分行书写
- 宏和字符串连接在一起完成一些更灵活的操作
除此之外不应将一个字符串拆成多个子串。
示例:
string strs[] = {
"123", "456", "789",
"123", "456", "789" // Rather suspicious, missing a comma?
"123", "456", "789"
};
例中初始化列表第 2 行的 "789" 与第 3 行的 "123" 中间没有逗号,会连接成 "789123",显然是不符合预期的,这种问题属于常见笔误。
又如:
void foo(const char*);
void foo(const char*, const char*);
void bar() {
foo("abc" "123"); // Rather suspicious, which ‘foo’ is right?
}