有什么理由再将extern用于常量吗?
在我早期,我经常有这样的结构:
// .h
extern const int MY_CONST;
// .cpp
const int MY_CONST = 5;
这是否真的被以下内容完全取代:
// .h
inline const int MY_CONST = 5;
现在有什么理由使用第一个变体吗?
请注意,后者具有更高的可读性,因为该值在头文件中可见(自记录)。
回答
当然。出于同样的原因,人们可能希望在单独的翻译单元中定义任何内容。例如,相同的推理适用于函数定义。
例如,一个原因可能是不需要根据变量重新编译所有内容,以防您想更改初始化程序。
另一个原因可能是初始化很复杂,并且涉及调用您希望隐藏的函数,因为您可能不希望依赖项是公开的。