CodingGuidelines: mention dynamic C99 initializer elements
The first use of variables in initializer elements appears to have been2b6854c863
(Cleanup variables in cat-file, 2007-04-21) released with v1.5.2. Some of those caused portability issues, and e.g. that "cat-file" use was changed in66dbfd55e3
(Rewrite dynamic structure initializations to runtime assignment, 2010-05-14) which went out with v1.7.2. But curiously66dbfd55e3
missed some of them, e.g. an archive.c use added ind5f53d6d6f
(archive: complain about path specs that don't match anything, 2009-12-12), and another one in merge-index.c (later builtin/merge-index.c) in0077138cd9
(Simplify some instances of run_command() by using run_command_v_opt()., 2009-06-08). As far as I can tell there's been no point since2b6854c863
in 2007 where a compiler that didn't support this has been able to compile git. Presumably66dbfd55e3
was an attempt to make headway with wider portability that ultimately wasn't completed. In any case, we are thoroughly reliant on this syntax at this point, so let's update the guidelines, see https://lore.kernel.org/git/xmqqy1tunjgp.fsf@gitster.g/ for the initial discussion. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e88a2d02dc
commit
442c27dde7
@ -213,6 +213,11 @@ For C programs:
|
||||
compilers we target have only partial support for it. These are
|
||||
considered safe to use:
|
||||
|
||||
. since around 2007 with 2b6854c863a, we have been using
|
||||
initializer elements which are not computable at load time. E.g.:
|
||||
|
||||
const char *args[] = {"constant", variable, NULL};
|
||||
|
||||
. since early 2012 with e1327023ea, we have been using an enum
|
||||
definition whose last element is followed by a comma. This, like
|
||||
an array initializer that ends with a trailing comma, can be used
|
||||
|
Loading…
Reference in New Issue
Block a user