[RFC/PATCH] CodingGuidelines: spell out post-C89 rules
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jul 16, 2019, 17:21 UTC
- Message-ID
- <xmqq4l3l520f.fsf_-_@gitster-ct.c.googlers.com>
- In-Reply-To
- <xmqq8ssx53a0.fsf@gitster-ct.c.googlers.com>
Even though we have been sticking to C89, there are a few handy features we borrow from more recent C language in our codebase after trying them in weather balloons and saw that nobody screamed.
Spell them out.
While at it, extend the existing variable declaration rule a bit to read better with the newly spelled out rule for the for loop.
Signed-off-by: Junio C Hamano <gitster@pobox.com> --- Documentation/CodingGuidelines | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines index 1169ff6c8e..53903b14c8 100644 --- a/Documentation/CodingGuidelines +++ b/Documentation/CodingGuidelines @@ -195,10 +195,24 @@ For C programs: by e.g. "echo DEVELOPER=1 >>config.mak". - We try to support a wide range of C compilers to compile Git with, - including old ones. That means that you should not use C99 - initializers, even if a lot of compilers grok it. + including old ones. That means that you should not use certain C99 + features, even if your compiler groks it. There are a few + exceptions: - - Variables have to be declared at the beginning of the block. + . since early 2012 with e1327023ea, we have been using an enum + definition whose last element is followed by a comma. + + . since mid 2017 with cbc0f81d and 512f41cf, we have been using + designated initializers for struct and array. + + These used to be forbidden, but we have not heard breakage report, + so they are assumed to be safe. + + - Variables have to be declared at the beginning of the block, before + the first statement (i.e. -Wdeclaration-after-statement). + + - Declaring a variable in the for loop "for (int i = 0; i < 10; i++)" + is still not allowed in this codebase. - NULL pointers shall be written as NULL, not as 0.