☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

全局及命名空间作用域中禁用 using 指令

4.13 ID_forbidUsingDirectives
目录 › next › previous

通过 using 指令将其他命名空间中的名称一并引入当前命名空间,是对命名空间机制的破坏,会造成难以预料的冲突与混乱。

示例:

// In global namespace
using namespace std;           // Non-compliant
using namespace myspace;       // Non-compliant

namespace myspace {
    using namespace hisspace;  // Non-compliant
}

在函数作用域内可适当放宽要求,如:

void foo() {
    using namespace myspace;   // Let it go

    type x;                    // Using myspace::type
    some_fun(x);               // Using mysapce::some_fun
}

建议用 using 声明 代替 using 指令:

void foo() {
    using myspace::type;       // Compliant, using-declaration
    using myspace::some_fun;   // Compliant, using-declaration

    type x;
    some_fun(x);
}

相关

ID_usingNamespaceInHeader

参考

C++ Core Guidelines SF.6 MISRA C++ 2008 7-3-4
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.