我使用MS Dev Studio编写C ++,我每周工作两天。我使用CVS使我的源在两台计算机之间保持同步,但机器所处的环境存在差异。
任何人都可以建议我可以有条件地修改代码中的常量,具体取决于我是否在我的主页上编译?
我所追求的是一种定义符号的方法,让我们自动称它为_ATHOME,所以我可以这样做:
#ifdef _ATHOME
# define TEST_FILES "E:\\Test"
# define TEST_SERVER "192.168.0.1"
#else
# define TEST_FILE "Z:\\Project\\Blah\\Test"
# define TEST_SERVER "212.45.68.43"
#endif
注意:这当然是出于开发和调试的目的,我绝不会发布像这样的硬编码常量的软件。
答案 0 :(得分:6)
在您的家庭和工作机器上,设置一个环境变量LOCATION
,对于家庭来说是“1”,对于工作来说是“2”。
然后在预处理器选项中添加预处理器define / DLOCATION = $(LOCATION)。这将评估您在环境变量中设置的“home”或“work”字符串。
然后在你的代码中:
#if LOCATION==1
// home
#else
// work
#endif
答案 1 :(得分:3)
如果工作和家庭之间的唯一区别是测试文件所在的位置...那么(恕我直言)你不应该用一堆静态路径污染你的构建文件&的IP。
对于您展示的示例,我只想在工作和家庭上映射驱动器。即在工作地图上一个驱动器T:指向\\ 212.45.68.43 \ Project \ Blah \ Test,在主地图上一个驱动器T:指向\\ 192.168.0.1 \ Test。
然后,您的构建过程使用路径“T:\”来引用测试所在的位置。
当然,如果你需要更改一些更激烈的东西,设置环境变量可能是最好的方法。
答案 2 :(得分:2)
您可以在properties-> c ++ - >预处理器中设置preproccesor变量 在visual studio设置中,您可以使用$(enviromentvariable)
答案 3 :(得分:1)
我通常使用配置文件,然后只需创建适当配置的符号链接。