函数不得在块范围内声明

时间:2015-03-12 16:19:14

标签: c++ misra

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

1 个答案:

答案 0 :(得分:3)

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

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

    //could define foo here
}

它的含义是将声明移到与定义相同的水平:

namespace {
    void foo();

    void bar() {}

    //could define foo here
}