c++ - 函数不应在 block 范围内声明

标签 c++ misra

我无法理解以下 misra 规则,“函数不得在 block 范围内声明”。文档中给出的解释是“在 block 范围内声明的函数将引用封闭命名空间的成员,因此声明应明确放置在命名空间级别。”他们的意思是指封闭命名空间的成员?有人可以澄清一下吗?

最佳答案

这意味着当你有了这个时,foo 将在 bar 之外的命名空间中有它的定义:

namespace {
    void bar() {
        void foo();
    }

    //could define foo here
}

它的意思是将声明移到与定义相同的级别:

namespace {
    void foo();

    void bar() {}

    //could define foo here
}

关于c++ - 函数不应在 block 范围内声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29015009/

相关文章:

C++ 删除指针本身而不是删除指向数据

c++ - 成员字段,构建顺序

c - MISRA C 2012 是否表示不使用 bool

c - 为什么 redlib 将 INT8_MIN 定义为 (-0x80) 而不是 (-0x7F) 或 (-INT8_MAX - 1)

c++ - C/C++ 条件返回语句

c++ - 将代码添加到 WNDCLASSEX 中的 WndProc 回调会破坏代码

c++ - 使用 FLTK 框架编译的问题

c++ - 使用 boost::python 将 C++ 类实例传递给 python

c - 在 c 的 if 语句中声明变量是个坏习惯吗?

c - 如何使我的代码符合 MISRA 2012 规则 2.1