Я хочу написать функцию hook, которая вызывается всякий раз, когда в моей программе вызывается функция для сбора статистики о аргументах функции. Например:Как написать общий крючок для функций в C?
void hook(function f, ...){
//some statistics here
f(...);
}
int main(){
foo(1, 2);
}
Так вместо вызова foo
непосредственно, он будет вызывать крюк вместо с foo
в качестве первого аргумента и 1, 2
в качестве дополнительных аргументов.
Есть ли что-нибудь подобное в C? Могу ли я достичь этой цели на С любым другим способом?
В c вам нужно иметь указатель функции с многоточием в его подписи. –
@ πάνταῥεῖ Код, который я написал, скорее псевдо-кода, чем реального. Я просто хочу знать, возможно ли это в C или нет. – afsafzal
Используя GCC, вы можете использовать свой код, используя флаг '-finstrument-functions'. Однако созданные функции не получают список аргументов ваших функций. Другой вариант - использовать макросы препроцессора, хотя вам нужно явно добавить код в свою функцию foo. –