Конкатенация строк C констант

Один из ответов на Почему вы не используете C для своих веб-приложений? содержит следующее:

Для дерьмового примера C ниже:

const char* foo = "foo";
const char* bar = "bar";
char* foobar = (char*)malloc(strlen(foo)+strlen(bar)+1);
strcpy(foobar, foo);
strcat(foobar, foo);

На самом деле, константы МОГУТ И ДОЛЖНЫ быть конкатенированы естественным образом в C:

const char foo[] = "foo";
const char bar[] = "bar";
char foobar[] = foo bar; // look Ma, I did it without any operator!

И использование [] вместо *даже позволит вам изменить строку, или найдите их длину:

int foo_str_len = sizeof(foobar)-1;

Итак, ПОЖАЛУЙСТА, прежде чем (ложно )утверждать, что C сложно использовать со строками, изучите, как использовать C.


Я пробовал это сам, но получаю ошибку:

ожидается ',' или ';' перед строковой константой

Итак, мой вопрос: :Нужно ли мне что-то сообщать компилятору, чтобы это сработало, или сообщение выше просто неверно? Обратите внимание, что я знаю другие способы конкатенации символьных массивов в C.

21
задан Community 23 May 2017 в 12:17
поделиться