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中的函数重载问题应该使用哪种技术(或思路)?
注意:
答案是重命名函数,但应该使用哪种模式进行重命名,函数名称仍为'good function name'?
例如:
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
函数名称的良好命名。
答案 0 :(得分:11)
使用要在函数名称中计算的数据类型,例如
char max_char(char x, char y);
short max_short(short x, short y);
int max_int(int x, int y);
float max_float(float x, float y);
答案 1 :(得分:0)
在此示例中,正确的解决方案是使用宏。您还可以简单地使用内联函数,该函数采用最大可能的整数或浮点类型,并且当已知参数较小时,让编译器优化它。关于签名等问题,你应该考虑一些极端情况,但无论如何都会发生这种情况。