gpt4 book ai didi

c++ - 使用不符合 misra 规则的 #define 命令定义数组

转载 作者:行者123 更新时间:2023-11-28 03:22:08 25 4
gpt4 key购买 nike

我有这样的定义:

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 规则。

有没有办法在保持 #define 的同时使其符合 MISRA?

最佳答案

有两种可能的原因:

  • 要么你的 MISRA 检查器坏了。我用 LDRA Testbed 测试了你的代码,它没有产生任何错误。
  • 或者我假设 NUM_UNITS 可能与传递给数组的指针数不匹配。我不清楚这是否违反了 MISRA 规则。您可以添加 sizeof(STRING_ARRAY)/sizeof(const char*) == NUM_UNITS 的静态断言,无论 MISRA 如何,这都是一种很好的做法。

关于c++ - 使用不符合 misra 规则的 #define 命令定义数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15138749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com