与宏同名的函数
#include<stdio.h>
void f(int a)
{
printf("%d", a);
}
#define f(a) {}
int main()
{
/* call f : function */
}
如何调用f
(函数)?编写 f(3)
不起作用,因为它被 {}
替换
#include<stdio.h>
void f(int a)
{
printf("%d", a);
}
#define f(a) {}
int main()
{
/* call f : function */
}
How to call f
(the function)? Writing f(3)
doesn't work because it is replaced by {}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
(f)(3);
有效吗?C 预处理器不会扩展
( )
内的宏f
。Does
(f)(3);
work?The C preprocessor doesn't expand the macro
f
inside( )
.使用函数指针来实现这一点:
Use function pointer to achieve this:
@Prasoon 发布了一种解决方案,另一种解决方案可能只是为该函数引入另一个名称,如果您无法更改该函数的名称,也无法更改宏的名称:
在线演示:http://www.ideone.com/fbTcE
One solution is posted by @Prasoon, another could be just introducing another name for the function, IF you can't change the function's name, neither the macro's name:
Online demo : http://www.ideone.com/fbTcE