2012-06-01 Manuel López-Ibáñez <m...@gcc.gnu.org> Jonathan Wakely <jwakely....@gmail.com>
PR c++/50134 * doc/invoke.texi (Warning Options): Explain purpose and differences between -Wmissing-prototypes and -Wmissing-declarations. This patch tries to improve the docs to clarify the intent of these options. The new wording isn't strictly accurate when it says that in C++ "all function declarations provide prototypes" because C++ doesn't use the term "prototype" at all, but I think it's clear what it means. OK for trunk?
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 3ad07f3..eb582b3 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -4416,8 +4416,12 @@ This warning is also enabled by @option{-Wextra}. @opindex Wno-missing-prototypes Warn if a global function is defined without a previous prototype declaration. This warning is issued even if the definition itself -provides a prototype. The aim is to detect global functions that -are not declared in header files. +provides a prototype. Use this option to detect global functions +that do not have a matching prototype declaration in a header file. +This option is not valid for C++ because all function declarations +provide prototypes and a non-matching declaration will declare an +overload rather than conflict with an earlier declaration. +Use @option{-Wmissing-declarations} to detect missing declarations in C++. @item -Wmissing-declarations @opindex Wmissing-declarations @@ -4425,7 +4429,9 @@ are not declared in header files. Warn if a global function is defined without a previous declaration. Do so even if the definition itself provides a prototype. Use this option to detect global functions that are not declared in -header files. In C++, no warnings are issued for function templates, +header files. In C, no warnings are issued for functions with previous +non-prototype declarations; use @option{-Wmissing-prototype} to detect +missing prototypes. In C++, no warnings are issued for function templates, or for inline functions, or for functions in anonymous namespaces. @item -Wmissing-field-initializers