gpt4 book ai didi

c++ - 米斯拉警告包括守卫

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:11:37 26 4
gpt4 key购买 nike

这是关于 MISRA C++ 2008 指南中的 MISRA 规则 16-0-2

Macros shall only be #define'd or #undef'd in the global namespace.

我理解这条规则,但我的 polyspace misra 检查工具提示以下包含在文件开头声明为不合规的守卫。我想如果这个文件本身包含在另一个命名空间中,就会发生这种情况,但我的头文件不是这种情况。

代码中还有哪些其他错误可能会导致此问题?

#ifndef FOO_H
#define FOO_H

... code etc ...

#endif

注意:Misra 指南中引用的示例是

#ifndef MY_HDR
#define MY_HDR // Compliant


namespace NS
{
#define FOO // Non- Compliant
#undef FOO // Non-Compliant
}
#endif

最佳答案

如果这些 header 保护位于任何大括号之外(在全局命名空间中),那么您的代码没有问题,但您的工具已损坏。向 Polyspace 发送错误报告。

此规则背后的基本原理是预处理器指令不应放在花括号内(在命名空间声明或函数等内),因为无论它们放在哪里,它们的作用域始终是全局的。

关于c++ - 米斯拉警告包括守卫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40525837/

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