Skip to content

Commit fe9dc6b

Browse files
committed
Merge branch 'jc/post-c89-rules-doc'
We have been trying out a few language features outside c89; the coding guidelines document did not talk about them and instead had a blanket ban against them. * jc/post-c89-rules-doc: CodingGuidelines: spell out post-C89 rules
2 parents 080af91 + cc0c429 commit fe9dc6b

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

Documentation/CodingGuidelines

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,30 @@ For C programs:
195195
by e.g. "echo DEVELOPER=1 >>config.mak".
196196

197197
- We try to support a wide range of C compilers to compile Git with,
198-
including old ones. That means that you should not use C99
199-
initializers, even if a lot of compilers grok it.
198+
including old ones. You should not use features from newer C
199+
standard, even if your compiler groks them.
200200

201-
- Variables have to be declared at the beginning of the block.
201+
There are a few exceptions to this guideline:
202+
203+
. since early 2012 with e1327023ea, we have been using an enum
204+
definition whose last element is followed by a comma. This, like
205+
an array initializer that ends with a trailing comma, can be used
206+
to reduce the patch noise when adding a new identifer at the end.
207+
208+
. since mid 2017 with cbc0f81d, we have been using designated
209+
initializers for struct (e.g. "struct t v = { .val = 'a' };").
210+
211+
. since mid 2017 with 512f41cf, we have been using designated
212+
initializers for array (e.g. "int array[10] = { [5] = 2 }").
213+
214+
These used to be forbidden, but we have not heard any breakage
215+
report, and they are assumed to be safe.
216+
217+
- Variables have to be declared at the beginning of the block, before
218+
the first statement (i.e. -Wdeclaration-after-statement).
219+
220+
- Declaring a variable in the for loop "for (int i = 0; i < 10; i++)"
221+
is still not allowed in this codebase.
202222

203223
- NULL pointers shall be written as NULL, not as 0.
204224

0 commit comments

Comments
 (0)