关于静态库的一个问题,多分相送!
现在遇到一问题,描述如下:
现在需要对外发布一个库,库中用到一些宏,而用户希望对这些宏进行配置。
如现在的代码:
#define MAX_USER_MEM 1024
用户希望根据具体情况修改这个值。
但如果用户改这个宏的话,库就需要重新编译。有什么好的办法,能让用户改这个值,而库又不需要重新编译呢?
目前想到的一个方法是使用配置文件,然后把宏改为变量(这种方法我这用不是很好)。除此之外,还有什么好方法没?
不知道问题描述清楚了没,大家帮忙看看吧!
如果能有满意的答案,那分数不是问题。至少再给你200分!你说就成!
问题点数:50、回复次数:8Top
1 楼megaboy(飞天御剑流之杀神一刀斩)回复于 2005-08-02 17:42:28 得分 0
这个MAX_USER_MEM有否用来定义数组?比如:char name[MAX_USER_MEM]?Top
2 楼pigja(朱健安)回复于 2005-08-02 17:44:29 得分 0
如果没有,有好办法没?
就算有,也可以让他没有,这个不是问题!Top
3 楼healer_kx(甘草(楼主揭贴吧,我们这些上班灌水的也不容易))回复于 2005-08-02 17:45:01 得分 20
这个用宏是不合适的了。宏在编译阶段就确定下来了。程序中用macro的地方都该用变量。
变量的初始化可以用macro的值,但是程序应该可以从指定的配置文件读取一个配置值,来修改变这个变量的值。
这个问题想都不用想了,一定是这样的。而且数据不复杂就不要用XML了。普通的INI文件就可以了。
Top
4 楼pigja(朱健安)回复于 2005-08-02 17:47:44 得分 0
谢谢healer_kx(天降甘草)。
不过我提过了“目前想到的一个方法是使用配置文件,然后把宏改为变量(这种方法我这用不是很好)。”
有没其他方法?Top
5 楼megaboy(飞天御剑流之杀神一刀斩)回复于 2005-08-02 17:54:09 得分 20
如果没有用于数组的话,何不在程序里面写段用户交互的代码,用来询问这个值的,每次运行就由用户自己输入这个值。
如果用于定义数组的话,把MAX_USER_MEM改成一个变量,同样由用户自己输入这个值,再由这个变量定义数组,这样定义的数组是VLA,楼主可以用支持VLA的linux的gcc编译成一个库让用户使用,没有问题的。Top
6 楼JohnTitor(贱畜)回复于 2005-08-02 19:49:10 得分 10
使用注册表把,你的在库里读注册表来获得那个值,用户通过注册表来修改这个值Top
7 楼jiajun2001(Jagen(嘉俊))回复于 2005-08-02 22:03:44 得分 0
我同意楼上的做法Top
8 楼pigja(朱健安)回复于 2005-08-03 09:45:44 得分 0
看来是我没说清楚,这个库是手机上操作系统库!不是windows下的。
如果通过配置文件,那文件系统初始化可能还没完成。
虽然不是我想要的答案,但各位已经提供了很多方法,谢谢大家了!
Top




