C++静态库中函数使用需要频繁修改的常量参数
最近在做一个项目,处于保密原因,只能拿到头文件和静态库文件,但静态库里面有个函数需要使用头文件中定义的宏。通过修改宏定义的数值,发现对运行结果并无影响,应该是在生成库文件时宏就被替换成数值写进了库文件中,后续也不再调用头文件中的宏定义了。然而我的工作需要修改该参数来查看参数取值的效果,若把该参数直接作为函数形参,那也是可以的,但对源文件修改太大。通过尝试发现使用外部变量的方法可以实现,下面举个例子说明一下。
- 生成静态库 ,如图,add函数需要c数组中的第二个元素参与计算。在生成静态库文件时,用extern修饰c数组,但不对数组赋值
- 使用静态库 ,在使用静态库的工程里,对该库文件对应的头文件里的c数组进行赋值,然后再main函数里调用add函数了。修改c数组,add同样的输入输出会不同,说明add函数在用c数组的值进行计算。在生成库文件时的头文件中和使用库文件的头文件中只能有其中一个赋值,不然会报错-变量重复定义。当然,也可以两个地方都不赋值,在main.cpp中赋值,但那就没有在头文件中修改方便了。