gpt4 book ai didi

c - 我应该在类函数宏中做哪些更改以使其符合 MISRA 标准?

转载 作者:行者123 更新时间:2023-12-04 02:27:17 26 4
gpt4 key购买 nike

类函数宏是

#define ARRAYSIZE(_Array)  ((sizeof(_Array)) / (sizeof(_Array[0])))

显示的错误是:

Error[Pm154]: in the definition of a function-like macro, each instance of a parameter shall be enclosed in parenthesis (MISRA C 2004 rule 19.10)

最佳答案

这只是迂腐地说你应该这样做 sizeof( (_Array)[0] )。后缀运算符具有非常高的优先级,因此不太可能成为实际问题。

迂腐地,您还应该使用 0u,因为目的是让 0 对应于无符号类型 (size_t)。

另请注意,前导下划线后跟大写字母保留用于 C 语言、MISRA 或无 MISRA 中的任何使用。

我会将整个宏替换为:

#define ARRAY_SIZE(array) ( sizeof(array) / sizeof *(array) )

应该同时兼容 C 语言和 MISRA-C。

关于c - 我应该在类函数宏中做哪些更改以使其符合 MISRA 标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66596726/

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