https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116082

--- Comment #3 from Alejandro Colomar <alx at kernel dot org> ---
(In reply to Alejandro Colomar from comment #2)
> I agree with martin.
> 
> And what if the '\0' is in the middle of the literal?
> 
> char x[4] = "a\0b";
> char x[3] = "a\0b";
> char y[2] = "a\0b";
> 
> I'd keep it simple, and assume the \0s in the middle of a string literal are
> not our business as far as this diagnostic is concerned.  If we cannot write
> the implicit null byte, diagnose.

On the other hand, we could say that any string literals that have an explicit
\0 are invalid strings, as a string is defined as a sequence of zero or more
non-zero bytes followed by exactly one zero byte.  Since that string literal is
not a really string, this diagnostic could be omitted.

Reply via email to