C编程:重新定义共享库中定义的宏(.so)

时间:2017-05-26 13:22:01

标签: c

我想覆盖共享库中定义的宏。

例如:

libxyz.so(共享库)有

#define ADDRESS 0

int some_func()
{
   ...
   func_use_addr(ADDRESS);
}

现在我编写一个代码,其中包含我想要的地址" some_func()"使用是(比方说)0xabc36000。

我可以在my.c文件中重新定义ADDRESS宏,以便它可以用作0xabc36000而不是some_func()中的0吗?

我知道在预处理阶段会替换宏,并且稍后会与共享库进行链接。我想知道是否可以通过修改共享库代码来实现这一目的。

1 个答案:

答案 0 :(得分:-3)

是的,您可以重新定义宏。

#ifdef ADDRESS
#undef ADDRESS
#endif

#define ADDRESS 0xabc36000