|
2鱼币
首先感谢大家点开来看我的这个问题,谢谢~O(∩_∩)O~~
这是学到函数这一章遇到的一个问题,在一个.c文件中引用另一个的函数时出现问题。问题如下:
新建一个win 32 console application,命名为fuction.再新建一个c++sourse file,命名为test02_1.输入代码:
/******************************
****** 值的传递(新版) *******
******************************
#include <stdio.h>
#include <conio.h>
void main()
{
int a, b, c;
int input();
int max(int x, int y);
printf("input a:");
a = input();
printf("input b:");
b = input();
c = max(a, b);
printf("a = %d, b = %d\n", a, b);
printf("max = %d\n", c);
getch();
}
int input()
{
int i, m;
m =scanf("%d", &i);
getchar();
while(m != 1)
{
printf("input error.please input again.\n");
printf("please input a number:");
m = scanf("%d", &i);
getchar();
}
return i;
}
int max(int x, int y)
{
if(x < y) x = y;
return x;
}
好,这样运行起来完全没问题。然后把这个test02_1.c注释掉,就是整个函数前后加上/********,再新建一个file,命名test03add.c,代码如下:
/******************************
****** add函数 ****************
******************************/
#include <stdio.h>
#include <conio.h>
void main()
{
float input();
float add(float x, float y);
float a, b, sum;
a = input();
b = input();
sum = add(a, b);
printf("sum = %f\n", sum);
}
float add(float x, float y)
{
x = x + y;
return x;
}
这样运行之后,输入2和3,输出却是
max = 3
但如果在test03add.c中再加入一个函数:
float input()
{
float i;
scanf("%f", &i);
return i;
}
则输出正常。这是为什么?谢谢大家~
|
最佳答案
查看完整内容
C语言同一工程内两个不同的函数,名字都叫做input,按照严格标准,C语言编译器在链接阶段必须报错。至于你的编译器为什么没有报错。。。这个智能解释为你的编译器在这个地方不符合C标准
|