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

Reply via email to