我有这个定义:
static const char* STRING_ARRAY[NUM_UNITS] = STRING_ARRAY_VALUES;
什么时候
#define STRING_ARRAY_VALUES \
{ "n/a", \
"bool", \
... \
}
不幸的是,它不符合 MISRA-C++ 规则 8-5-2:
"MISRA-C++ Rule 8-5-2 (required): Braces shall be used to indicate and match the
structure in the non-zero initialization of arrays and structures."
谁能向我解释为什么它不符合要求?我认为#define 命令将定义转换为:
static const char* STRING_ARRAY[NUM_UNITS] = {"n/a", "bool",...}
这符合 MISRA 规则。
有没有办法使它符合 MISRA 同时保持#define
?