全局静态常量应使用static constexpr或static const声明,命名严格采用全大写加单下划线的SNAKE_CASE格式,定义在头文件中以static保证翻译单元隔离,类型安全且避免宏与枚举混淆。

全局静态常量应统一用全大写字母 + 下划线(SNAKE_CASE)命名,同时明确其存储期、作用域和不可变性。核心是:static const(或 constexpr)+ 全大写标识符 + 下划线分隔单词。
命名必须全大写且下划线分隔
每个单词全部大写,单词间仅用单个下划线连接,不加数字前缀、不缩写模糊词、不混用大小写:
- ✅ 正确:
MAX_CONNECTIONS、DEFAULT_TIMEOUT_MS、PI_VALUE - ❌ 错误:
MaxConnections(驼峰)、max_connections(含小写)、MAX_CONN(缩写歧义)、MAX__TIMEOUT(双下划线)
声明需带 static 和 const/constexpr
在头文件中定义全局静态常量时,推荐使用 static constexpr(C++11起),确保编译期求值、内联、无ODR问题;若需兼容旧标准或复杂类型,用 static const:
static constexpr int BUFFER_SIZE = 4096;static constexpr double GRAVITY_ACCEL = 9.80665;-
static const char* const APP_NAME = "MyApp";(注意双 const:指针本身 + 指向内容均不可变)
作用域与头文件使用注意事项
全局静态常量通常定义在头文件中,但 static 保证每个翻译单元独立副本,避免链接冲突;若需跨单元共享同一实体(如调试开关),应改用 extern const 声明 + 单一源文件定义:
- 头文件中(推荐多数场景):
static constexpr bool ENABLE_LOGGING = true; - 需唯一实例时:头文件写
extern const int VERSION_NUMBER;,源文件写const int VERSION_NUMBER = 2026;
避免与宏、枚举值混淆
虽然宏也用全大写下划线,但全局静态常量是类型安全的 C++ 实体,不是预处理符号。不要用 #define 替代;枚举值(如 enum class Status { OK, ERROR };)中的 OK 也遵循同样命名风格,但属于枚举作用域,不构成全局符号污染。

















