如何在c中为函数提供别名[重复]
Posted
技术标签:
【中文标题】如何在c中为函数提供别名[重复]【英文标题】:How to give alias for a function in c [duplicate] 【发布时间】:2016-12-05 07:00:21 【问题描述】:问题是这样的:
我有一个名为ADD_TWO(int,int);
的函数,现在在程序中,我想创建它的别名,保持之前的函数不变。类似于ADD_TWO_NUMBERS(int,int);
。即如果我调用ADD_TWO_NUMBERS
,它应该执行ADD_TWO
。
我想为函数设置一个别名。
【问题讨论】:
为什么不创建ADD_TWO_NUMBERS
函数,它会调用ADD_TWO
?
你可以使用函数指针
int (*ADD_TWO_NUMBERS)(int,int) = ADD_TWO;
【参考方案1】:
int ADD_TWO(int a, int b)
return a+b;
int main()
int (*ADD_TWO_NUMBERS)(int, int) = ADD_TWO;
int result = ADD_TWO_NUMBERS(10, 12); //or (*ADD_TWO_NUMBERS)(10, 12)
cout<<" Result :- "<<result<<endl;
return 0;
使用函数指针
【讨论】:
【参考方案2】:除了使用函数指针,您还可以使用function-like macros。尝试类似
#define ADD_TWO_NUMBERS(x,y) ADD_TWO(x,y)
【讨论】:
函数指针更好,因为它们可以被赋予一个范围。 是的。没有什么比口臭的宏更糟糕的了。【参考方案3】:因为这个问题有c++ 标签并且假设你使用的是c++11
编译器,那么:
int ADD_TWO(int a, int b)
return a+b;
int main()
auto ADD_TWO_NUMBERS = ADD_TWO;
int result = ADD_TWO_NUMBERS(10, 12);
cout << " Result :- " << result << endl;
return 0;
【讨论】:
以上是关于如何在c中为函数提供别名[重复]的主要内容,如果未能解决你的问题,请参考以下文章