В настоящее время я работаю над проектом на C, в котором существуют различные функции, которые все должны быть инкапсулированы между двумя другими функциями. Схематично это выглядит следующим образом:Функция инкапсуляции с использованием препроцессора C11
int func1(int arg) {
prepare();
doStuff();
undo();
return stuff;
}
char func2(int arg1, char* arg2) {
prepare();
doOtherStuff();
undo();
return results;
}
Я слышал препроцессор довольно мощные, так что можно вставить prepare()
и undo()
функций до и после фактического тела функции, используя некоторый препроцессор фетиш? Я знаю, что настоятельно рекомендуется не использовать препроцессор, если его можно избежать, но мне все же интересно, возможно ли это.
Cheers.
Я собираюсь удалить этот ответ, как только вы его прочтете, потому что я не считаю его очень волюемым. –
Спасибо. Тогда я пойду вперед и удалю сообщение. – Freeman
Вы убедились, что он работает на вас? Аргумент 'doStuff', конечно, не является именем функции, но любой фрагмент кода, который вы хотите выполнить. –