Andreas Schwab wrote:
[EMAIL PROTECTED] (Ross Ridge) writes:
The entire parsing of the format string is affected by the multi-byte
character encoding. I don't know how GCC would be able tell that a byte
with the same value as '%' in the middle of string would actually be
interpreted as '%' character rather than a part of an extended multibyte
character. This can easily happen with the ISO 2022-JP encoding.
The compiler is supposed to know the encoding of the strings.
More precisely, you should tell the compiler about the input and
execution charset. For example, this should make sure that a statement
like this
printf ("\x1B$B%s\x1B(B");
^^
this %s is not a printf escape!
does not yield a -Wformat warning even with -finput-charset=ISO-2022-JP
-fexec-charset=ISO-2022-JP.
Currently, the above program *does* yield a warning, though (PR33748).
Paolo