У меня есть такое определение:
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
?
NUM_UNITS
и помещаю все это в файл cpp. - person chris   schedule 28.02.2013