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

在合理的位置声明

6.12.1 ID_unsuitableDeclaration
目录 › next › previous

如果声明的位置不合理会降低代码的可维护性,甚至会导致标准未定义的行为。

应遵循如下原则:

  • 外部链接的对象或函数应在头文件中声明,并避免重复声明
  • 内部链接的对象或函数应在源文件中声明,不应在头文件中声明
  • 避免在头文件外手工书写外部声明
  • 避免在局部作用域内声明函数或全局对象

示例:

int fun()
{
    extern int g;       // Non-compliant, bad practice
    extern int foo();   // Non-compliant, bad practice
    static int bar();   // Non-compliant, undefined behavior
    ....
}

外部链接的对象或函数应通过头文件引入,如果分散在函数中声明是不便于统一管理和维护的。另外,在局部作用域中使用除 extern 之外的存储类说明符声明函数会导致标准未定义的行为。

相关

ID_staticInHeader ID_anonymousNamespaceInHeader

依据

ISO/IEC 9899:1999 6.7.1(5)-undefined ISO/IEC 9899:2011 6.7.1(7)-undefined

参考

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