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

inline、virtual、static、typedef 等关键字的位置应统一

6.3.11 ID_badSpecifierPosition
目录 › next › previous

语言允许 inline、virtual、static、typedef 等关键字出现在类型名称的左侧,也可以出现在其右侧,甚至可以出现在基本类型名称的中间,应对其位置进行统一规范以提高可读性。

本规则对下列 C 或 C++ 关键字有同样的要求:

inline、virtual、explicit、
register、static、thread_local、extern、mutable、
friend、typedef、constexpr、
_Alignas、_Atomic、_Noreturn、_Thread_local

这些关键字应统一出现在声明的起始,类型名称的左侧。

对于 const 和 volatile 也需面对类似的问题,参见 ID_badQualifierPosition。

示例:

struct A {
    long long typedef LL;        // Non-compliant
    bool static foo();           // Non-compliant
    char friend bar();           // Non-compliant
    unsigned int virtual baz();  // Non-compliant
};

例中各种声明均有一定的特殊性,如果声明其特殊性的关键字在类型名称之后,不便于阅读甚至会引起误解。

应改为:

struct A {
    typedef long long LL;        // Compliant
    static bool foo();           // Compliant
    friend char bar();           // Compliant
    virtual unsigned int baz();  // Compliant
};

相关

ID_sandwichedModifier ID_badQualifierPosition

依据

ISO/IEC 9899:1999 6.7(1) ISO/IEC 9899:1999 6.7.2(1) ISO/IEC 9899:2011 6.7(1) ISO/IEC 9899:2011 6.7.2(1) ISO/IEC 14882:2003 A.6 ISO/IEC 14882:2011 A.6
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.