ANSI C和函数重载

时间:2011-10-20 09:15:27

标签: c naming overloading

  

可能重复:
  function overloading in 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中的函数重载问题应该使用哪种技术(或思路)?

注意

答案是重命名函数,但应该使用哪种模式进行重命名,函数名称仍为'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函数名称的良好命名

2 个答案:

答案 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)

在此示例中,正确的解决方案是使用宏。您还可以简单地使用内联函数,该函数采用最大可能的整数或浮点类型,并且当已知参数较小时,让编译器优化它。关于签名等问题,你应该考虑一些极端情况,但无论如何都会发生这种情况。