我试图更多地了解预处理器如何与 GCC 在 GNU/Linux 上生成的共享对象库相关。
我一直无法找到一个清晰,简洁的答案。
如果我使用预处理器语句,例如:
#ifndef __OPTI_MY_VARIABLE
#define __OPTI_MY_VARIABLE 1
#endif
我用这个编译了一个共享对象文件,并用另一个我声明的程序链接到它:
#define __OPTI_MY_VARIABLE 2
在编译使用共享对象库的主程序后,我的程序会使用值 1 还是 2?
如果它使用值 1,是否有办法构造代码以使其使用值 2,例如不使用预处理器语句?换句话说,有没有办法让我声明默认值,除非另一个同名的全局变量覆盖它,或者必须将此信息传递给共享对象中的函数?