Using the extern keyword on function prototypes is superfluous visual noise so suggest removing it.
Using extern can cause unnecessary line wrapping at 80 columns and unnecessarily long multi-line function prototypes. Suggested-by: Hannes Frederic Sowa <han...@stressinduktion.org> Signed-off-by: Joe Perches <j...@perches.com> --- On Thu, 2013-07-25 at 03:47 +0200, Hannes Frederic Sowa wrote: > On Wed, Jul 24, 2013 at 06:41:20PM -0700, Joe Perches wrote: > > On Thu, 2013-07-25 at 01:27 +0000, Cong Wang wrote: > > > On Tue, 23 Jul 2013 at 17:58 GMT, Joe Perches <j...@perches.com> wrote: > > > > Function prototypes don't need to be declared > > > > extern in .h files. It's assumed by the compiler > > > > and is as unnecessary as using auto is when > > > > declaring automatic/local variables in a block. > > > Since we all know this, why bother it? > > If everyone knew this, new ones wouldn't be added. > > But a lot are. > Couldn't checkpatch take care of these? checkpatch doesn't work well for multiple lines so this doesn't work on things like extern unsigned long foo(type bar); but it does for the single line function prototypes. Using --fix removes them. scripts/checkpatch.pl | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 6918517..23126d4 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -3866,6 +3866,16 @@ sub process { } } +# check for new externs in .h files. + if ($realfile =~ /\.h$/ && + $line =~ /^\+\s*(extern\s+)$Type\s*$Ident\s*\(/s) { + if (WARN("AVOID_EXTERNS", + "extern prototypes should be avoided in .h files\n" . $herecurr) && + $fix) { + $fixed[$linenr - 1] =~ s/(.*)\bextern\b\s*(.*)/$1$2/; + } + } + # check for new externs in .c files. if ($realfile =~ /\.c$/ && defined $stat && $stat =~ /^.\s*(?:extern\s+)?$Type\s+($Ident)(\s*)\(/s) -- 1.8.1.2.459.gbcd45b4.dirty -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/