diff --git a/addons/misra.py b/addons/misra.py index eaea81dfb..7201c2759 100755 --- a/addons/misra.py +++ b/addons/misra.py @@ -3231,7 +3231,10 @@ class MisraChecker: if token.str == '{': token = token.link - if cppcheckdata.simpleMatch(token, "[ ]"): + # skip function pointer parameter types + if token.astOperand1 is None: + pass + elif cppcheckdata.simpleMatch(token, "[ ]"): self.reportError(token, 18, 7) break token = token.next diff --git a/addons/test/misra/misra-test.c b/addons/test/misra/misra-test.c index d4e7f39ad..b1a0baca2 100644 --- a/addons/test/misra/misra-test.c +++ b/addons/test/misra/misra-test.c @@ -1713,6 +1713,7 @@ struct { } r18_7_struct; // 8.4 struct { uint16_t len; + int (*array_param_func_ptr)(char const *argv[], int argc); // no-warning uint8_t data_1[ 19 ]; uint8_t data_2[ ]; // 18.7 } r18_7_struct; // 8.4