Merge branch 'jc/doc-compat-util'
Clarify wording in the CodingGuidelines that requires <git-compat-util.h> to be the first header file. * jc/doc-compat-util: doc: clarify the wording on <git-compat-util.h> requirement
This commit is contained in:
@ -446,12 +446,41 @@ For C programs:
|
|||||||
detail.
|
detail.
|
||||||
|
|
||||||
- The first #include in C files, except in platform specific compat/
|
- The first #include in C files, except in platform specific compat/
|
||||||
implementations and sha1dc/, must be either "git-compat-util.h" or
|
implementations and sha1dc/, must be <git-compat-util.h>. This
|
||||||
one of the approved headers that includes it first for you. (The
|
header file insulates other header files and source files from
|
||||||
approved headers currently include "builtin.h",
|
platform differences, like which system header files must be
|
||||||
"t/helper/test-tool.h", "xdiff/xinclude.h", or
|
included in what order, and what C preprocessor feature macros must
|
||||||
"reftable/system.h".) You do not have to include more than one of
|
be defined to trigger certain features we expect out of the system.
|
||||||
these.
|
A collorary to this is that C files should not directly include
|
||||||
|
system header files themselves.
|
||||||
|
|
||||||
|
There are some exceptions, because certain group of files that
|
||||||
|
implement an API all have to include the same header file that
|
||||||
|
defines the API and it is convenient to include <git-compat-util.h>
|
||||||
|
there. Namely:
|
||||||
|
|
||||||
|
- the implementation of the built-in commands in the "builtin/"
|
||||||
|
directory that include "builtin.h" for the cmd_foo() prototype
|
||||||
|
definition,
|
||||||
|
|
||||||
|
- the test helper programs in the "t/helper/" directory that include
|
||||||
|
"t/helper/test-tool.h" for the cmd__foo() prototype definition,
|
||||||
|
|
||||||
|
- the xdiff implementation in the "xdiff/" directory that includes
|
||||||
|
"xdiff/xinclude.h" for the xdiff machinery internals,
|
||||||
|
|
||||||
|
- the unit test programs in "t/unit-tests/" directory that include
|
||||||
|
"t/unit-tests/test-lib.h" that gives them the unit-tests
|
||||||
|
framework, and
|
||||||
|
|
||||||
|
- the source files that implement reftable in the "reftable/"
|
||||||
|
directory that include "reftable/system.h" for the reftable
|
||||||
|
internals,
|
||||||
|
|
||||||
|
are allowed to assume that they do not have to include
|
||||||
|
<git-compat-util.h> themselves, as it is included as the first
|
||||||
|
'#include' in these header files. These headers must be the first
|
||||||
|
header file to be "#include"d in them, though.
|
||||||
|
|
||||||
- A C file must directly include the header files that declare the
|
- A C file must directly include the header files that declare the
|
||||||
functions and the types it uses, except for the functions and types
|
functions and the types it uses, except for the functions and types
|
||||||
|
Reference in New Issue
Block a user