我无法理解以下的misra规则,“函数不应在块范围内声明”。文档中给出的解释是“在块作用域中声明的函数将引用封闭命名空间的成员,因此声明应该显式放在命名空间级别。”他们的意思是指封闭命名空间的成员?有人可以澄清吗?
答案 0 :(得分:3)
这意味着当你拥有它时,foo
将在bar
之外的名称空间中定义:
namespace {
void bar() {
void foo();
}
//could define foo here
}
它的含义是将声明移到与定义相同的水平:
namespace {
void foo();
void bar() {}
//could define foo here
}