在我工作的C ++代码库中,声明常量的模式看起来像这样。
// module_constants.h
#ifndef MODULE_CONSTANTS
#define MODULE_CONSTANTS
namespace module {
extern const int SOME_CONST;
}
#endif
// module_constants.cpp
#include "module_constants.h"
namespace module {
const int SOME_CONST = 1;
}
这种方法的优点是什么,而不是定义标题中的所有常量值?
答案 0 :(得分:5)
我所知道的唯一优势是,您只需在更改常量值时重新编译单个cpp文件,而不是直接或间接包含头文件的每个文件。
当您提供动态链接库并希望在不重新编译实际应用程序的情况下对其进行修补时,这可能特别有用。
一些缺点是
答案 1 :(得分:-1)
嗯,有很多缺点。特别是,那些常量名称不能被#include头文件用作编译时常量。
答案 2 :(得分:-2)
好吧,如果将它包含在多个cpp文件中,通过将其放在标题中,您将遇到单定义规则。
但是,另一方面,你可以在我认为的标题中将其创建为constexpr。