On 16.01.2025 10:31, Nicola Vetrini wrote: > MISRA C Rule 20.7 states: > "Expressions resulting from the expansion of macro parameters shall > be enclosed in parentheses". > > Document the behaviour of ECLAIR with respect to the CPP extension > that allows variable macro arguments to be named. > > Signed-off-by: Nicola Vetrini <nicola.vetr...@bugseng.com> > --- > docs/misra/rules.rst | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/docs/misra/rules.rst b/docs/misra/rules.rst > index e7763795b826..13890f6d8852 100644 > --- a/docs/misra/rules.rst > +++ b/docs/misra/rules.rst > @@ -671,7 +671,14 @@ maintainers if you want to suggest a change. > shall be enclosed in parentheses > - Extra parentheses are not required when macro parameters are used > as function arguments, as macro arguments, array indices, lhs in > - assignments or as initializers in initalizer lists. > + assignments or as initializers in initalizer lists. In addition, > + the use of a named variable argument in a macro that would constitute > + a violation of the rule is allowed by ECLAIR as an extension of the > + MISRA, since it may not always be possible to parenthesize such
Just one nit / question (addressable while committing, if desired): I wouldn't have expected "the" before "MISRA". Is that conventional wording in your environment? Jan > + argument and the feature is non-standard:: > + > + #define M(args...) args > + #if M(1) + 0 > > * - `Rule 20.9 > <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_20_09.c>`_ > - Required