From 9214f2999b85533ad184e6508f0a0a078d9d3b8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 6 Jul 2021 13:44:51 +0200 Subject: [PATCH] CODING_STYLE: allow joined variable declarations and function calls MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit … but only for a single variable. The guidelines already allowed declaring variables at the point of initialization. But not making a function call to do that. Let's allow that now. The existing style of declaring and initializing seperate is still allowed, and whatever makes most sense should be used. --- docs/CODING_STYLE.md | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/docs/CODING_STYLE.md b/docs/CODING_STYLE.md index f2c877cceb..4792f270c5 100644 --- a/docs/CODING_STYLE.md +++ b/docs/CODING_STYLE.md @@ -153,25 +153,34 @@ SPDX-License-Identifier: LGPL-2.1-or-later ## Using C Constructs - Allocate local variables where it makes sense: at the top of the block, or at - the point where they can be initialized. `r` is typically used for a local - state variable, but should almost always be declared at the top of the - function. + the point where they can be initialized. Avoid huge variable declaration + lists at the top of the function. + + As an exception, `r` is typically used for a local state variable, but should + almost always be declared as the last variable at the top of the function. ```c { - uint64_t a, b; + uint64_t a; int r; - a = frobnicate(); - b = a + 5; - - r = do_something(); + r = frobnicate(&a); if (r < 0) … + + uint64_t b = a + 1, c; + + r = foobarify(a, b, &c); + if (r < 0) + … + + const char *pretty = prettify(a, b, c); + … } ``` -- Do not mix function invocations with variable definitions in one line. +- Do not mix multiple variable definitions with function invocations or + complicated expressions: ```c { @@ -225,7 +234,7 @@ SPDX-License-Identifier: LGPL-2.1-or-later - To determine the length of a constant string `"foo"`, don't bother with `sizeof("foo")-1`, please use `strlen()` instead (both gcc and clang optimize the call away for fixed strings). The only exception is when declaring an - array. In that case use STRLEN, which evaluates to a static constant and + array. In that case use `STRLEN()`, which evaluates to a static constant and doesn't force the compiler to create a VLA. - Please use C's downgrade-to-bool feature only for expressions that are