我想編寫一個鉤子函數,當我的程序調用一個函數來收集一些關於函數參數的統計信息時,就會調用它。例如:如何在C中編寫函數的通用鉤子?
void hook(function f, ...){
//some statistics here
f(...);
}
int main(){
foo(1, 2);
}
因此而不是直接調用foo
,它會調用掛鉤,而不是與foo
作爲第一個參數和1, 2
作爲額外的參數。
在C中有類似的東西嗎?我可以用其他方式在C中達到這個目標嗎?
在c中你需要有一個函數指針和一個省略號簽名。 –
@πάνταῥεῖ我寫的代碼更多的是僞代碼,而不是真正的代碼。我只想知道這在C中是否可行。 – afsafzal
使用GCC,你可以用'-finstrument-functions'標誌來測試你的代碼。但是,生成的函數不會收到函數的參數列表。另一種選擇是使用預處理器宏,儘管您需要向foo函數明確添加代碼。 –