3

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

4

1 回答 1

3

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

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

    //could define foo here
}

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

namespace {
    void foo();

    void bar() {}

    //could define foo here
}
于 2015-03-12T16:24:25.140 回答