最佳答案
在我档案的最上面
#define AGE "42"
在后面的文件中,我多次使用 ID,其中一些行看起来像
std::string name = "Obama";
std::string str = "Hello " + name + " you are " + AGE + " years old!";
str += "Do you feel " + AGE + " years old?";
我得到了一个错误:
错误: 类型为‘ const char [35]’和‘ const char [2]’的操作数对二进制‘运算符 +’无效
在3号线。我做了一些研究,发现这是因为 C + + 处理不同字符串的方式,并且能够通过将“ AGE”改为“ string (AGE)”来修复它然而,直到今天我才意外地错过了一个实例,我想知道为什么编译器不抱怨,即使我仍然有一个实例,它只是“ AGE”。
通过一些尝试和错误,我发现我只需要在不连接在函数体中创建的另一个字符串的行上使用 string(AGE)
。
我的问题是“在后台发生了什么,C + + 不喜欢连接字符串和预处理器放在那里的字符串,除非你也连接在函数中定义的字符串。”