http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52952

--- Comment #8 from Manuel López-Ibáñez <manu at gcc dot gnu.org> 2012-05-22 
11:04:41 UTC ---
(In reply to comment #3)
> What does clang report for this:
> 
> #include <stdio.h>
> void f() {
>    printf(
> "%."
> "*d");
> }
> 
> ?

An even more interesting example is this:

#define FORMAT ".*d"
#include <stdio.h>
void f() {
   printf(
"%"
FORMAT);
}

for which Clang prints:

/tmp/webcompile/_17428_0.c:6:1: warning: '.*' specified field precision is
missing a matching 'int' argument
FORMAT);
^
/tmp/webcompile/_17428_0.c:1:18: note: expanded from:
#define FORMAT ".*d"
                 ^
1 warning generated.

So either one keeps track of all source locations of all "interesting"
characters within strings, which sounds infeasible. Or one needs to
re-preprocess the format string, creating new locations on-the-fly. Dodji, is
this possible?

Reply via email to