亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: C能否做到這樣的重載? [打印本頁]

作者: FreeGnu    時間: 2009-05-09 17:20
標題: C能否做到這樣的重載?
extern void func(void);//該函數(shù)的實踐在lib中
我想做到實現(xiàn)自己的
void func(void)
{
        func();//調(diào)用lib中的func
        do_others();
}
作者: ecjtubaowp    時間: 2009-05-09 17:39
沒試過
作者: xinglp    時間: 2009-05-09 17:51
原帖由 FreeGnu 于 2009-5-9 17:20 發(fā)表
extern void func(void);//該函數(shù)的實踐在lib中
我想做到實現(xiàn)自己的
void func(void)
{
        func();//調(diào)用lib中的func
        do_others();
}


可以動態(tài)載入這個庫,并獲取函數(shù)指針

參考函數(shù)
dlopen()
dlsym()

[ 本帖最后由 xinglp 于 2009-5-9 17:52 編輯 ]
作者: daybreakcx    時間: 2009-05-09 18:39
我也沒試過
作者: langue    時間: 2009-05-09 21:04
就算用 C++ / Java / C# 也都做不到。當函數(shù)的簽名相同時,編譯器能檢測到這種沖突,會引發(fā)一個編譯時錯誤。
作者: langue    時間: 2009-05-09 21:13
其實你提供的代碼能編譯通過,效果就是 func() 函數(shù)的重復遞歸調(diào)用,并導致堆棧溢出。
在同一個源代碼中不能同時存在兩個簽名完全相同的函數(shù)的定義。
提供給鏈接器的目標文件也不能包含相同簽名的全局符號,或者類成員。
3 樓提供的方法也許有用。
作者: styleplus    時間: 2009-05-09 22:38
耍一點詭計:
如果有幸支持inline的話,全部寫在頭文件中

  1. extern void func(void);
  2. static inline void func__new(void)
  3. {
  4.         func();//調(diào)用lib中的func
  5.         do_others();
  6. }

  7. #define func func__new
復制代碼

作者: tianxiaogang12    時間: 2009-05-09 23:09
不能做到吧, 當調(diào)用func時,編譯器不知道你到底調(diào)用的是哪一個,
作者: agaric    時間: 2009-05-10 00:53
額…… 沒有看全。 如果是動態(tài)鏈接可能是可以的。就是在win上經(jīng)常說的hook api

[ 本帖最后由 agaric 于 2009-5-10 00:55 編輯 ]
作者: FreeGnu    時間: 2009-05-11 10:58
原帖由 styleplus 于 2009-5-9 22:38 發(fā)表
耍一點詭計:
如果有幸支持inline的話,全部寫在頭文件中

extern void func(void);
static inline void func__new(void)
{
        func();//調(diào)用lib中的func
        do_others();
}

#define func ...

這種方法不錯,試一下

thanks to all
作者: prolj    時間: 2009-05-11 11:00
我知道怎么替換系統(tǒng)調(diào)用,和hook的原理一樣。
作者: dreamice    時間: 2009-05-11 11:09
函數(shù)名相同,而且是一個顯示的的函數(shù)名,應該無法實現(xiàn)
作者: alexhappy    時間: 2009-05-11 11:32
原帖由 prolj 于 2009-5-11 11:00 發(fā)表
我知道怎么替換系統(tǒng)調(diào)用,和hook的原理一樣。

HOOK貌似不能滿足LZ的需要。。。他是用同名函數(shù)替換的呀
作者: edgar51774    時間: 2009-05-12 12:17
標題: 回復 #1 FreeGnu 的帖子
不知道
作者: edigar    時間: 2009-05-12 12:31
inline hook可以的,沒有玩過linux下的hook,不知道怎么實現(xiàn)
如果是動態(tài)庫的話,想想3樓的方法是可以的
作者: reiase    時間: 2009-05-12 14:23
原帖由 prolj 于 2009-5-11 11:00 發(fā)表
我知道怎么替換系統(tǒng)調(diào)用,和hook的原理一樣。


你可以試試sandbox之類的技術,hook太危險




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2