http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57137
Bug #: 57137 Summary: spurious "format string is not literal" when the format string is marked with __attribute__((format)) Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassig...@gcc.gnu.org ReportedBy: zbys...@in.waw.pl If the format string is marked as a printf format with an attribute format((printf(...)) on the wrapper function, then gcc should know that it's either a valid printf format, or will be warned about at the point where it is passed to the wrapper function, and shouldn't warn that the format string is not a literal. Attached example gives: unit.c: In function ‘unit_status_printf’: unit.c:6:9: warning: format not a string literal, argument types not checked [-Wformat-nonliteral] manager_status_printf(status, unit_status_msg_format, "xxx"); ^ It is possible to work around by placing #pragma GCC diagnostic ignored "-Wformat-nonliteral" before the function, but that feels like a kludge.