http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47901
Summary: -Wall should not imply -Wformat-zero-length by default Product: gcc Version: 4.5.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassig...@gcc.gnu.org ReportedBy: and...@kaseorg.com There is nothing wrong with printf("") or custom_printf_like_function(foo, ""). There are plenty of reasons to write such code: for example, when using a macro that sometimes expands to the empty string, or if custom_printf_like_function does something else with foo in addition to using the format string, or if the string is used for something other than printing and you really just want the empty string there. gcc/c-format.c contains a comment that says “If the format is an empty string, this should be counted similarly to the case of extra format arguments.” But those are not actually similar. Extra format arguments clearly indicate that the code was not written as intended, because the extra arguments could be removed with no effects; but a zero-length string is there for a reason and can’t just be removed. When GCC complains about legitimate empty format strings as soon as -Wall is turned on, it only leads to frustration with -Wall. This leads some users to give up on -Wall altogether, and thus to miss many of the real problems -Wall would find; and leads others to come up with brain-damaged workarounds like adding a useless space: http://git.kernel.org/linus/6f131ce1dfa9b283ddc212df42b015d152c670a5 Can we change -Wformat-zero-length to default to off unless explicitly requested? See also: http://gcc.gnu.org/ml/gcc-patches/2002-05/msg01469.html http://ewx.livejournal.com/517490.html http://www.mail-archive.com/qemu-devel@nongnu.org/msg43910.html