coding-style: additional style for C code
To improve readability and to push more uniform code style. Prefer 'if (false) {...}' for unused code so it get checked by the compiler. Define preferred indentation for 'switch' statement. Require balanced brackets in 'if/else'. Report the max line length. Report the formatting strings for stdint/inttypes types. Report the type 'target_addr_t'. Prefer 'unsigned int' to 'unsigned'. Change-Id: I0192a4ed298f6c6c432764fdd156cffd4b13fc89 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/6203 Reviewed-by: Tomas Vanek <vanekt@fbl.cz> Tested-by: jenkins Reviewed-by: Oleksij Rempel <linux@rempel-privat.de> Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com> Reviewed-by: Marc Schink <dev@zapb.de>
This commit is contained in:
parent
c5c2a83001
commit
3d46346e07
|
@ -48,9 +48,55 @@ OpenOCD project.
|
||||||
- use Unix line endings ('\\n'); do NOT use DOS endings ('\\r\\n')
|
- use Unix line endings ('\\n'); do NOT use DOS endings ('\\r\\n')
|
||||||
- limit adjacent empty lines to at most two (2).
|
- limit adjacent empty lines to at most two (2).
|
||||||
- remove any trailing empty lines at the end of source files
|
- remove any trailing empty lines at the end of source files
|
||||||
- do not "comment out" code from the tree; instead, one should either:
|
- do not "comment out" code from the tree nor put it within a block
|
||||||
-# remove it entirely (git can retrieve the old version), or
|
@code
|
||||||
-# use an @c \#if/\#endif block.
|
#if 0
|
||||||
|
...
|
||||||
|
#endif
|
||||||
|
@endcode
|
||||||
|
otherwise it would never be checked at compile time and when new
|
||||||
|
patches get merged it could be not compilable anymore.
|
||||||
|
Code that is not fully working nor ready for submission should
|
||||||
|
instead be removed entirely (git can retrieve the old version).
|
||||||
|
For exceptional cases that require keeping some unused code, let
|
||||||
|
the compiler check it by putting it in a block
|
||||||
|
@code
|
||||||
|
if (false) {
|
||||||
|
/* explain why this code should be kept here */
|
||||||
|
...
|
||||||
|
}
|
||||||
|
@endcode
|
||||||
|
- in a @c switch statement align the @c switch with the @c case label
|
||||||
|
@code
|
||||||
|
switch (dev_id) {
|
||||||
|
case 0x0123:
|
||||||
|
size = 0x10000;
|
||||||
|
break;
|
||||||
|
case 0x0412:
|
||||||
|
size = 0x20000;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
size = 0x40000;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@endcode
|
||||||
|
- in an <tt> if / then / else </tt> statement, if only one of the conditions
|
||||||
|
require curly brackets due to multi-statement block, put the curly brackets
|
||||||
|
also to the other condition
|
||||||
|
@code
|
||||||
|
if (x > 0)
|
||||||
|
a = 12 + x;
|
||||||
|
else
|
||||||
|
a = 24;
|
||||||
|
@endcode
|
||||||
|
@code
|
||||||
|
if (x > 0) {
|
||||||
|
a = 12 + x;
|
||||||
|
} else {
|
||||||
|
a = 24;
|
||||||
|
x = 0;
|
||||||
|
}
|
||||||
|
@endcode
|
||||||
|
|
||||||
Finally, try to avoid lines of code that are longer than 72-80 columns:
|
Finally, try to avoid lines of code that are longer than 72-80 columns:
|
||||||
|
|
||||||
|
@ -60,6 +106,7 @@ Finally, try to avoid lines of code that are longer than 72-80 columns:
|
||||||
- a few lines may be wider than this limit (typically format strings), but:
|
- a few lines may be wider than this limit (typically format strings), but:
|
||||||
- all C compilers will concatenate series of string constants.
|
- all C compilers will concatenate series of string constants.
|
||||||
- all long string constants should be split across multiple lines.
|
- all long string constants should be split across multiple lines.
|
||||||
|
- do never exceed 120 columns.
|
||||||
|
|
||||||
@section stylenames Naming Rules
|
@section stylenames Naming Rules
|
||||||
|
|
||||||
|
@ -104,11 +151,15 @@ or variable length arrays on the stack. non-MMU hosts(uClinux) and
|
||||||
pthreads require modest and predictable stack usage.
|
pthreads require modest and predictable stack usage.
|
||||||
|
|
||||||
@section styletypes Type Guidelines
|
@section styletypes Type Guidelines
|
||||||
- use native types (@c int or @c unsigned) if the type is not important
|
- use native types (@c int or <tt> unsigned int </tt>) if the type is not important
|
||||||
- if size matters, use the types from \<stdint.h\> or \<inttypes.h\>:
|
- if size matters, use the types from \<stdint.h\> or \<inttypes.h\>:
|
||||||
- @c int8_t, @c int16_t, @c int32_t, or @c int64_t: signed types of specified size
|
- @c int8_t, @c int16_t, @c int32_t, or @c int64_t: signed types of specified size
|
||||||
- @c uint8_t, @c uint16_t, @c uint32_t, or @c uint64_t: unsigned types of specified size
|
- @c uint8_t, @c uint16_t, @c uint32_t, or @c uint64_t: unsigned types of specified size
|
||||||
|
- use the associated @c printf and @c scanf formatting strings for these types
|
||||||
|
(e.g. @c PRId8, PRIx16, SCNu8, ...)
|
||||||
- do @b NOT redefine @c uN types from "types.h"
|
- do @b NOT redefine @c uN types from "types.h"
|
||||||
|
- use type @c target_addr_t for target's address values
|
||||||
|
- prefer type <tt> unsigned int </tt> to type @c unsigned
|
||||||
|
|
||||||
@section stylefunc Functions
|
@section stylefunc Functions
|
||||||
|
|
||||||
|
@ -143,6 +194,20 @@ More directly, do @b not combine these kinds of statements:
|
||||||
// Combined statements should be avoided
|
// Combined statements should be avoided
|
||||||
if ((result = foo()) != ERROR_OK)
|
if ((result = foo()) != ERROR_OK)
|
||||||
return result;
|
return result;
|
||||||
|
@endcode
|
||||||
|
- Do not compare @c bool values with @c true or @c false but use the
|
||||||
|
value directly
|
||||||
|
@code
|
||||||
|
if (!is_enabled)
|
||||||
|
...
|
||||||
|
@endcode
|
||||||
|
- Avoid comparing pointers with @c NULL
|
||||||
|
@code
|
||||||
|
buf = malloc(buf_size);
|
||||||
|
if (!buf) {
|
||||||
|
LOG_ERROR("Out of memory");
|
||||||
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
@endcode
|
@endcode
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue