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?