git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: header file at a top

From
Jeff King <peff@peff.net>
Date
Dec 18, 2011, 05:43 UTC
Message-ID
<20111218054352.GB4462@sigill.intra.peff.net>
In-Reply-To
<CACnwZYdSPPhLyu6Oi3k2aNzYqvmD=xDYWvCEd2ofyJSntqKdJg@mail.gmail.com>
On Sat, Dec 17, 2011 at 07:57:42PM -0200, Thiago Farina wrote:
Show 15 quoted lines
> I don't understand why in git the .h file is not included as the first
> substantive line of the .c file.
> 
> i.e:
> 
> foo.c
> --------------------------------------------------------------------
> #include "foo.h"
> 
> /* in alphabetical order */
> #include "bar.h"
> #include "tiz.h"
> 
> Any particular reason we include the corresponding header file at some
> random position in the source file?

The first include in any git source file should be either "git-compat-util.h", or something that includes it (usually "cache.h"). This introduces compatibility wrappers and definitions which may be used by other headers.

After that, the next one could be "foo.h", and I do tend to like that style (since it gives a check that foo.h has no surprising header dependencies). But I think we simply don't bother caring about header dependencies in git (i.e., we do have recursive includes in some places, but we don't require them, and in practice the compiler will tell us if a source file fails to include a depended-upon header).

-Peff
Previous: Thiago Farina
Message 2 of 2 in “header file at a top”
  1. Thiago FarinaDec 17, 2011
  2. Jeff KingDec 18, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.