现在我有大量存储在常量中的魔术数字。这些在每个构建之间进行了大量调整。例如const int numAPPLES = 25
现在这些都是在每个相关类头的顶部定义的。但有时候他们需要分享,而我必须要么:
我以前把它们全部放在options.h
中,这很好,因为我可以一起看到它们但是改变数字显然会触发完全重建。
如果重要的话我正在使用VS 2010。
允许更改这些数字的最佳方法是什么?我想知道如何将.txt文件添加到我的VS项目中,然后从那里提取变量。
数据类型(目前仅)char
和int
我也不希望只有访问它们的整个库依赖。但是一个简单的推荐课程;或者建立自己的方式会很棒。
谢谢!
答案 0 :(得分:9)
如果在编译时需要常量,则必须在更改时重新编译。
如果您只需要运行时的值,则可以将它们声明为
extern const int numAPPLES;
并将实际值放在单独的.cpp文件中。更改值时,只需重新编译该文件即可。
答案 1 :(得分:2)
您是否考虑过使用在运行时读取的.ini文件来存储所有这些常量?
然后,您可以使用GetPrivateProfileInt
/ GetPrivateProfileString
阅读此类文件。根据我的经验,这是一种非常常见的方式来处理Windows下的情况。
以下是一个简单的Try.ini文件示例:
..
[Section1]
Const1 = 1
..
代码片段:
CString FileName = _T("Try.ini");
int Value = GetPrivateProfileInt( "Section1", "Const1", DEFAULT_ERROR, FileName );
if( Value == DEFAULT_ERROR)
return ERROR;
干杯
答案 2 :(得分:1)
回答编辑:不,it看起来不太好。什么是魔法255分散在整个代码?它是C ++代码,那么char *字符串在那里做什么?
我想如果它按原样编译并且你能够立即将它集成到你的代码中,它会很有用。然后,当您对它感到满意时,您可以保持界面并重写方法以保证清晰度和安全性。
但我建议你看看一些图书馆,第一个出现在我脑海中的是Boost.Program_options。