我最近被一个微妙的bug咬了.
char ** int2str = {
"zero", // 0
"one", // 1
"two" // 2
"three",// 3
nullptr };
assert( int2str[1] == std::string("one") ); // passes
assert( int2str[2] == std::string("two") ); // fails
Run Code Online (Sandbox Code Playgroud)
如果你有神圣的代码审查权力,你会注意到我忘记了,后"two".
经过相当大的努力找到这个bug我必须问为什么有人会想要这种行为?
我可以看到这对宏魔术有什么用处,但是为什么这是像python这样的现代语言中的"特征"?
您是否曾在生产代码中使用字符串文字串联?