C/C中带有函数名的额外括号++

考虑下面的C程序。该程序在函数名周围有额外的括号。

null

// C program to show that extra brackets with function
// name work
#include <stdio.h>
void (foo)( int n)
{
printf ( "Function : %d " , n);
}
int main()
{
(foo)(4);
return 0;
}


输出:

Function 4

因此,在C/C++中,用函数名添加额外的括号是有效的。

它有什么用呢? 一个用途是,如果我们有一个与函数同名的宏,那么额外的括号可以避免在我们希望调用函数的任何地方进行宏扩展。

// C program to show that extra brackets with function
// name can be useful if we have a macro with same name
#include <stdio.h>
#define foo(n)  printf("Macro : %d ", n);
void (foo)( int n)
{
printf ( "Function : %d " , n);
}
int main()
{
(foo)(4);
foo(4);
return 0;
}


输出:

Function 4
Macro : 4

如果你喜欢Geeksforgek,并想贡献自己的力量,你也可以写一篇文章,然后把你的文章发到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享