int main(void)
{
char four[4] = \"four\";
return 0;
}
When compiled as a C++ program, G++ reports
xxx.cpp: In function int
What you're seeing is a difference between C and C++. C allows you to have extra initializers, which are ignored. C++ prohibits this -- if you specify a size for a string (or array) it must be large enough to accommodate all the initializers (including the NUL terminator, in the case of a string), or the code is ill-formed (standardese for "it's not allowed -- expect the compiler to reject it").