#include <stdio.h>
int Add(int a, int b);
int Add(int a, int b, int c);
double Add(double a, double b);
void main()
{
printf("1+2=%d\n",Add(1,2));
printf("3+4+5=%d\n",Add(3,4,5));
printf("1.414+2.54=%f\n",Add(1.414,2.54));
}
int Add(int a, int b)
{
return a+b;
}
int Add(int a, int b, int c)
{
return a+b+c;
}
double Add(double a, double b)
{
return a+b;
}我用C语言编写,并使用Xcode。在学习“重载”时,Xcode保留了无法工作的错误信息。相反,它显示了“冲突类型的‘添加’”消息。使用Xcode,重载会不能工作吗?
发布于 2014-07-29 05:53:12
简单地说,C不允许函数重载!因此,您不能用相同的名称编写多个函数!
试着给出不同的函数名然后试着-
#include <stdio.h>
int Add2int(int a, int b);
int Add3int(int a, int b, int c);
double Add(double a, double b);
void main()
{
printf("1+2=%d\n",Add2int(1,2));
printf("3+4+5=%d\n",Add3int(3,4,5));
printf("1.414+2.54=%f\n",Add(1.414,2.54));
}
int Add2int(int a, int b)
{
return a+b;
}
int Add3int(int a, int b, int c)
{
return a+b+c;
}
double Add(double a, double b)
{
return a+b;
}发布于 2014-07-29 07:09:12
如前所述,C不支持函数重载(如在C++中)。永无止境的C99引入了带有空参数的类似函数的宏,但是逗号必须保留确切的数字。下面是一个示例:
#include <stdio.h>
#define Add(a,b,c) (a+0)+(b+0)+(c+0)
int main(void)
{
int a = 1, b = 2, c = 3;
double x = 1.5, y = 2.25, z = 3.15;
printf("%d\n", Add(a, b, c)); /* 6 */
printf("%d\n", Add(a, b, )); /* 3 */
printf("%d\n", Add(, , c)); /* 3 */
printf("%g\n", Add(, y, z)); /* 5.4 */
printf("%g\n", Add(x, , )); /* 1.5 */
return 0;
}注意,由于对带有浮点类型的参数进行适当的算术转换,0将被正确地提升到这种类型。
发布于 2015-05-17 14:01:44
这可能只有在您使用C++时才有可能。
但是在C语言中,您不能考虑函数重载。
因此,尝试更改函数名,然后它就能工作了。
https://stackoverflow.com/questions/25008833
复制相似问题