Ошибка: недопустимые операнды типов «const char [35]» и «const char [2]» для двоичного «оператора +»

В верхней части моего файла у меня есть

#define AGE "42"

Позже в файле я использую идентификатор несколько раз, включая несколько строк, которые выглядят как

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. Я провел некоторое исследование и обнаружил, что это было из-за того, как C ++ обрабатывал различные строки и смог исправить это, изменив «AGE» на «string (AGE)». Тем не менее, я случайно пропустил один из экземпляров до сегодняшнего дня, и мне было интересно, почему компилятор не жаловался, хотя у меня все еще был случай, когда это был просто «ВОЗРАСТ».

Путем проб и ошибок я обнаружил, что мне нужно толькоstring(AGE) в строках, где я не объединяю другую строку, созданную в теле функции.

Мои вопросы таковы: «Что происходит в фоновом режиме, когда C ++ не любит объединять строку со строкой, помещенной туда препроцессором, если вы также не объединяете строку, определенную в функции».

Ответы на вопрос(6)

Ваш ответ на вопрос