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?