在我的文件的顶部,我有
#define AGE "42"
Run Code Online (Sandbox Code Playgroud)
稍后在文件中我多次使用ID,包括一些看起来像的行
1 std::string name = "Obama";
2 std::string str = "Hello " + name + " you are " + AGE + " years old!";
3 str += "Do you feel " + AGE + " years old?";
Run Code Online (Sandbox Code Playgroud)
我收到错误:
"错误:类型'const char [35]'和'const char [2]'到二进制'运算符+''的操作数无效"
第3行.我做了一些研究,发现这是因为C++如何处理不同的字符串,并且能够通过将"AGE"更改为"string(AGE)"来修复它.但是,直到今天我才意外地错过了其中一个实例,并且想知道为什么编译器没有抱怨,即使我还有一个只是"AGE"的实例.
通过一些反复试验,我发现我只需要string(AGE)在不连接函数体中创建的另一个字符串的行上.
我的问题是"在后台发生的事情是C++不喜欢将字符串与预处理器放置的字符串连接起来,除非你还连接了你在函数中定义的字符串."