mtb*_*mtb 2 c++ const extern constexpr c++11
何时使用constexpr以及何时使用extern const?
我有这样的情况:
在标题(.h)中:
extern const int MAX_NUMBER_OF_ROWS;
Run Code Online (Sandbox Code Playgroud)在源(.cpp):
const int MAX_NUMBER_OF_ROWS= 99;
Run Code Online (Sandbox Code Playgroud)文件(标题和源)仅包含此类定义和声明.
是否建议只使用constexpr头文件并删除源文件,就像在这里一样?:
// this is in the header file. There is no cpp file any more.
constexpr int MAX_NUMBER_OF_ROWS= 99;
Run Code Online (Sandbox Code Playgroud)
Som*_*ude 12
使用extern const头文件只告诉了变量存在的编译器,它是不可修改的.它不会告诉编译器它的值,这意味着它不再是编译时常量.如果它不是编译时常量,那么它不能用于例如case或数组大小.
正如MM在评论中所说,要么使用
const int MAX_NUMBER_OF_ROWS= 99;
Run Code Online (Sandbox Code Playgroud)
要么
constexpr int MAX_NUMBER_OF_ROWS= 99;
Run Code Online (Sandbox Code Playgroud)
直接在头文件中,它将是包含头文件的所有翻译单元中的编译时常量.