c类函数别名
我想知道是否有一个简单的方法来写一个c类函数的别名.例如,如果我有一些列表容器对象,则逻辑函数将是
int list::length() { return len; } 但程序员可能会使用另一个逻辑别名 int list::size() { return len; } 所以,而不是使用它们的全部函数来编写这两个函数,有没有办法使list :: size()具有list :: length()的别名,这样在编译时不是重复的,而是引用相同的函数? 我已经读过,你可以用#define来做到这一点,但是我不想让其他代码名称在某个范围之外(比如’size’变量)混淆. 我的一个猜测是,大多数优化编译器将会将以下内容作为直接函数别名: inline int list::length() { return len; } inline int list::size() { return length(); } 或者,是否有c的严格“别名”语法? (我找不到 – 不确定) 编辑:我已经接受了答案,只是为了填写这个问题,因为这只是我的好奇心.任何有良好信息的人,请添加评论或回答,甚至可能改变我的答案. 解决方法
我不会使用预处理器和#define来做到这一点.一般预处理器应该是C的最后手段.请参阅这个
C++ FAQ on inline functions,其中还包含有关使用预处理器宏的各种恶意的部分.
我将使用的方法是具有一个功能,它将具有几个不同的别名,具有更复杂的功能和接口,您将执行以下操作: int list::length(string xString,int iValue) { int iReturnValue = 0; // init the return value // do stuff with xString and iValue and other things return iReturnValue; } 然后为别名做类似以下操作. inline int list::size(string xString,int iValue) {return length(xString,iValue);} 内联应该基本上只是用实际的函数调用替换别名. 另请参阅stack overflow posting Giving a function implementation more than one name.它提供了一些您可能不想这样做的原因. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |