Konkatenacja łańcuchów stałych

Jedna z odpowiedzi doDlaczego nie używasz C do swoich aplikacji internetowych? zawiera następujące elementy:

Dla przykładu C crap poniżej:

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

W rzeczywistości stałe MOGĄ I POWINNY być naturalnie łączone w C:

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

A użycie [] zamiast * pozwoli nawet zmodyfikować łańcuch lub znaleźć jego długość:

int foo_str_len = sizeof(foobar)-1;

Więc proszę, zanim (fałszywie) twierdzisz, że C jest trudny w użyciu z ciągami, naucz się korzystać z C.

Sam to wypróbowałem, ale wystąpił błąd:

oczekiwany „,” lub „;” przed ciągiem znaków

Więc moje pytanie brzmi: czy muszę coś powiedzieć kompilatorowi, aby ten działał, czy powyższy post jest po prostu błędny? Zwróć uwagę, że znam inne sposoby łączenia tablic znaków w C.