在头文件或实现文件中定义常量的优点

ryb*_*ome 2 c++

在我正在使用的C++代码库中,声明常量的模式看起来像这样.

// module_constants.h
#ifndef MODULE_CONSTANTS
#define MODULE_CONSTANTS

namespace module {

extern const int SOME_CONST;

}

#endif
Run Code Online (Sandbox Code Playgroud)
// module_constants.cpp
#include "module_constants.h"

namespace module {

const int SOME_CONST = 1;

}
Run Code Online (Sandbox Code Playgroud)

这种方法的优点是什么,而不是定义标题中的所有常量值?

Mik*_*eMB 5

我所知道的唯一优点是,您只需在更改常量值时重新编译单个cpp文件,而不是直接或间接包含头文件的每个文件.

当您提供动态链接库并希望在不重新编译实际应用程序的情况下对其进行修补时,这可能特别有用.

一些缺点是

  • (正如后期开发人员写的那样)你不能在需要常量表达式的地方(例如数组边界或模板参数)在cppfile之外使用它们,在cppfile中你定义了它.
  • 你让优化者的生活更加艰难.
  • 从工具的角度来看,例如intellisense不会向你展示它的价值.