#include<stdio.h> void f(int a) { printf("%d", a); } #define f(a) {} int main() { /* call f : function */ }
Как позвонить f (функция)?Запись f(3) не работает, потому что она заменена на {}
f
f(3)
{}
Работает ли (f)(3);?
(f)(3);
Препроцессор C не раскрывает макрос f внутри ( ).
( )
int main() { #undef f // clear f! f(3); }
Используйте указатель на функцию для достижения этой цели:
int main() { void (*p)(int a); p = f; p(3); //--> will call f(3) return 0; }
Одно решение опубликовано @Prasoon, другое может просто ввести другое имя для функции, ЕСЛИ вы не можете изменить ни имя функции, ни имя макроса:
#include<stdio.h> void f(int a) { printf("%d", a); } #define fun (f) //braces is necessary #define f(a) {} int main() { fun(100); }
Онлайн-демонстрация: http://www.ideone.com/fbTcE