PEP 7: Add C pre-processor macro style recommendations (#3516)

This commit is contained in:
Erlend E. Aasland 2023-11-16 10:37:18 +01:00 committed by GitHub
parent c0870debbc
commit ca28a17523
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 22 additions and 0 deletions

View File

@ -135,6 +135,25 @@ Code lay-out
return 0; /* "Forgive" adding a __dict__ only */
}
* Vertically align line continuation characters in multi-line macros.
* Macros intended to be used as a statement should use the
``do { ... } while (0)`` macro idiom,
without a final semicolon.
Example::
#define ADD_INT_MACRO(MOD, INT) \
do { \
if (PyModule_AddIntConstant((MOD), (#INT), (INT)) < 0) { \
goto error; \
} \
} while (0)
// To be used like a statement with a semicolon:
ADD_INT_MACRO(m, SOME_CONSTANT);
* ``#undef`` file local macros after use.
* Put blank lines around functions, structure definitions, and major
sections inside functions.
@ -170,6 +189,9 @@ Naming conventions
* Macros should have a MixedCase prefix and then use upper case, for
example: ``PyString_AS_STRING``, ``Py_PRINT_RAW``.
* Macro parameters should use ``ALL_CAPS`` style,
so they are easily distinguishable from C variables and struct members.
Documentation Strings
=====================