В C нет специального оператора конкатенации строк ( +), такого как C # и Java. В C # или Java, когда компилятор видит
"a" + "b"
он может скомпилировать код точно так, как если бы
"ab"
были написаны в исходном коде. Однако в Си нет такого же простого синтаксиса для описания конкатенации строк, которые компилятор может распознать и предварительно рассчитать. Таким образом, дизайнеры C десятилетия назад выбрали это
"a" "b"
будет означать точно так же, как
"ab"
Естественно, C ++ унаследовал то же соглашение. Хотя стандарт C ++ библиотека перегружает +на std::stringв среднем конкатенации, компилятор не пытается сливаться , "a" + "b"потому что на самом деле ошибка (вы не можете добавить два const char *указателя вместе).
#define FOO "foo-value"позже"FOO's value is " FOO "."