-1
我想覆蓋共享庫中定義的宏。C編程:重新定義共享庫中定義的宏(.so)
例如:
libxyz.so(共享庫)具有
#define ADDRESS 0
int some_func()
{
...
func_use_addr(ADDRESS);
}
現在我寫的一個代碼,其中,我想 「some_func()」 使用的地址是(比方說)0xabc36000 。
我可以在my.c文件中重新定義ADDRESS宏,以便它可以用作0xabc36000而不是some_func()
中的0嗎?
我知道宏在預處理階段被替換,並且在稍後發生與共享庫的鏈接。我想知道是否有辦法做到這一點,不用修改共享庫代碼。
你在最後一段回答你自己的問題。只是明確地重申:不,這是不可能的。 –
共享庫沒有預處理器符號(只有源代碼有它們)。所以你可以從源代碼 –
重新編譯你的共享庫你必須用新地址作爲參數來覆蓋包含對'func_use_addr()'的調用的整個函數'some_func()'。 – Ctx