ANSI C 和函数重载
可能的重复:
C 中的函数重载
ANSI C 不允许函数重载(我不确定 C99 )。
例如:
char max(char x, char y);
short max(short x, short y);
int max(int x, int y);
float max(float x, float y);
不是有效的 ANSI C 源代码。
应该使用哪种技术(或想法)来解决 ANSI C 中的函数重载问题?
注意:
答案是重命名函数,但是应该使用哪种模式来重命名,函数名称仍然是“好函数名称”?
例如:
char max1(char x, char y);
short max2(short x, short y);
int max3(int x, int y);
float max4(float x, float y);
对于 max
函数名称来说,这不是一个好的命名。
Possible Duplicate:
function overloading in C
ANSI C doesn't permit function overloading (I don't sure about C99).
for example:
char max(char x, char y);
short max(short x, short y);
int max(int x, int y);
float max(float x, float y);
is not a valid ANSI C source code.
Which technique (or idea) should be used for function overloading problem in ANSI C?
Note:
An answer is renaming the functions, but which pattern should be used for renaming, that function names remain 'good function name'?
for example:
char max1(char x, char y);
short max2(short x, short y);
int max3(int x, int y);
float max4(float x, float y);
is not a good naming for max
function name.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
例如,在函数名称中使用要计算的数据类型
Using the data type to be evaluated in the function name, for example
在此示例中,正确的解决方案是使用宏。您还可以简单地使用一个内联函数,该函数采用最大可能的整数或浮点类型,并让编译器在已知参数较小时对其进行优化。您应该考虑一些关于签名等的极端情况,但无论如何这些已经发生了。
In this example, the proper solution is using a macro. You could also simply use an inline function that takes the largest-possible integer or floating point type and let the compiler optimize it down when the argument is known to be smaller. There are some corner cases you should consider with regards to signedness etc. but those happen already anyway.