В верхней части моего файла у меня есть
#define AGE "42"
Позже в файле я использую 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?";
Я получаю сообщение об ошибке:
": недопустимые операнды типов" const char [35] и 'const char [2] для двоичного' оператора + "
в строке 3. Я провел некоторое исследование и нашел, что это связано с тем, как С++ обрабатывал разные строки и смог исправить его, изменив "AGE" на "string (AGE)". Тем не менее, я случайно пропустил один из экземпляров до сегодняшнего дня и задавался вопросом, почему компилятор не жаловался, хотя у меня все еще был экземпляр, где он был просто "ВОЗРАСТ".
Через некоторые пробные и ошибки я обнаружил, что мне нужно только string(AGE)
в строках, где я не конкатенирую другую строку, созданную в теле функции.
Мои вопросы: "Что происходит в фоновом режиме, что С++ не любит конкатенировать строку со строкой, помещенной там препроцессором, если вы также не объединяете строку, определенную вами в функции".