我的项目使用version.h
配置应用版本,许多源文件都包含此version.h
,目前它定义的应用版本如下:
#define VERSION 1
每次升级到新版本时,我都需要修改此VERSION
,并且由于所有源文件都包含它,整个项目会重新编译,这需要很长时间。< / p>
所以我想把它分成 .h 和 .cpp 。然后我在更新时修改 .cpp ,它只重新编译一个文件。
这是我尝试的内容:
TEST.CPP
#include <iostream>
using namespace std;
const static int VERSION;
// some other source code that uses the version
struct traits {
const static int ver = VERSION;
};
int main() {
cout << traits::ver << endl;
}
version.cpp
const int VERSION = 1;
请注意,我需要将其用作静态。但它没有编译,错误:
错误C2734:&#39; VERSION&#39;:&#39; const&#39;如果没有,则必须初始化对象 &#39;的extern&#39;
错误C2131:表达式未评估为常量
注意:失败是由非常量参数或对a的引用引起的 非常数符号
注意:请参阅&#39; VERSION&#39;
的用法
定义版本代码的最佳方法是什么?
环境:Visual Studio 2015更新3
答案 0 :(得分:4)
<强> version.h中强>
extern const int VERSION;
<强> version.cpp 强>
#include "version.h"
extern const int VERSION = 1;
<强> TEST.CPP 强>
#include "version.h"
struct traits {
const static int ver;
};
const int traits::ver = VERSION;
答案 1 :(得分:0)
我使用类似的东西。
我的 version.cpp 如下所示:
const int SoftwareVersion = 0xAA55A55A;
要使用版本号(例如main.cpp中的示例),它看起来像:
...
extern const int SoftwareVersion;
...
int main(int argc, char **args) {
printf("Version %i\n",SoftwareVersion);
}