#include<stdio.h>
void f(int a)
{
printf("%d", a);
}
#define f(a) {}
int main()
{
/* call f : function */
}
如何拨打f
(该功能)?写f(3)
不起作用,因为它被{}
答案 0 :(得分:16)
(f)(3);
是否有效?
C预处理器不会展开f
内的宏( )
。
答案 1 :(得分:7)
int main()
{
#undef f // clear f!
f(3);
}
答案 2 :(得分:4)
使用函数指针实现此目的:
int main() {
void (*p)(int a);
p = f;
p(3); //--> will call f(3)
return 0;
}
答案 3 :(得分:1)
@Prasoon发布了一个解决方案,另一个解决方案可能就是为函数引入另一个名称,如果你不能改变函数的名称,那么宏的名字都不会:
#include<stdio.h>
void f(int a)
{
printf("%d", a);
}
#define fun (f) //braces is necessary
#define f(a) {}
int main()
{
fun(100);
}