On Thu, Feb 8, 2018 at 1:38 PM, Jeff King <peff@xxxxxxxx> wrote: > On Thu, Feb 08, 2018 at 01:04:08PM -0800, Stefan Beller wrote: > >> You may sense a pattern here: I currently have the very firm understanding >> we use the extern keyword in our codebase. >> >> And I can also attest that this was not always the case, as back in the >> day I remember writing patches without the extern keyword only to be told: >> (A) be similar to the function in the next lines >> (B) the standard is to use extern >> and I was convinced it was a bad decision to prefix declarations with >> the extern keyword, but followed along as I don't want to have style >> in the way of writing features. > > It definitely was the case that people used to suggest "extern". I think > this was a Linus-ism from the early days, and I have been hating it for > almost 12 years now. ;) > >> $ cat Documentation/CodingGuidelines |grep extern >> $ # oh no it's empty! >> >> Care to add a section to our coding guidelines? > > Here's a patch. > > -- >8 -- > Subject: [PATCH] CodingGuidelines: mention "static" and "extern" > > It perhaps goes without saying that file-local stuff should > be marked static, but it does not hurt to remind people. > > Less obvious is that we are settling on "do not include > extern in function declarations". It is already the default > unless the function was previously declared static (but if > you are following a static declaration with an unmarked one, > you should think about why you are declaring the thing > twice). And so it just becomes an extra noise-word in our > header files. > > We used to give the opposite advice, so there are quite a > few "extern" markers in early Git code. But this at least > makes a concrete suggestion that we can follow going > forward. > > Signed-off-by: Jeff King <peff@xxxxxxxx> Reviewed-by: Stefan Beller <sbeller@xxxxxxxxxx> ... and now I can resend that patch, after fixing it to follow our style. :) > --- > Documentation/CodingGuidelines | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines > index c4cb5ff0d4..48aa4edfbd 100644 > --- a/Documentation/CodingGuidelines > +++ b/Documentation/CodingGuidelines > @@ -386,6 +386,11 @@ For C programs: > - Use Git's gettext wrappers to make the user interface > translatable. See "Marking strings for translation" in po/README. > > + - Variables and functions local to a given source file should be marked > + with "static". Variables that are visible to other source files > + must be declared with "extern" in header files. However, function > + declarations should not use "extern", as that is already the default. > + > For Perl programs: > > - Most of the C guidelines above apply. > -- > 2.16.1.365.g89f5777adf >