Может ли кто-нибудь помочь мне преодолеть проблему, указанную ниже?Как преодолеть ограничение функций макета
Определение обертки для функций, которые находятся в одном файле (например, Foo и бар, и в том же файл - foo.c):
С 2 функции Foo() и бар() в том же самом файл, ассемблера разрешает вызов до линкера имеет возможность обернуть его __ wrap_bar()
Как упоминается в человеке странице --wrap = символ (Вы можете предоставить функцию «__real_malloc» так что ссылки без опции -wrap будут успешными. Если вы сделаете это, вы не должны указывать определение «__real_malloc» в том же файле, что и «__wrap_malloc», и если вы это сделаете, ассемблер может разрешить вызов be перед этим линкер имеет возможность обернуть его в «malloc».)
Функция foobar() определена в файле bar.c и вызывает обернутые функции __wrap_foo() и __wrap_bar() (завернутые, как ожидалось, линкер).
Функция __wrap_foo() вызывает функцию Foo() и функция __wrap_bar() вызывает функцию бар()
функции Foo() и бар() определены в файле foo.c. Функция foo() вызывает функциональную панель().
Вызов из них дает выход, как показано ниже:
Foobar вызова к Foo() ===> наматывается Foo ===> Foo вызова в бар ===> бар
и
foorbar вызова в бар() ===> завернуть-бар ===> бар
в то время как ожидаемый объем производства, как показано ниже:
Foobar вызова к Foo() ===> наматывается Foo ===> Foo вызова в бар ===> наматывается бар ===> Бар
и
foorbar вызов bar() ===> wrap-bar ===> bar
Пожалуйста, помогите мне решить эту проблему.
Благодаря
Ну, ваш учитель уверен, что это было сложно! – moffeltje