木悠悠 发表于 2005-10-17 22:20:17

编译C语言时遇到了问题,求助!

小弟想在linux下学C语言,可是编译的时候不成功.是不是函数名不对啊?还是调用函数的方法错了?请各位大哥大姐帮忙啊!
下面是小代码:
#include<stdio.h>
#include<math.h>
main()
{
float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);
printf("area=%7.2f\n",area);
}
结果:
/tmp/ccIms7yH.o(.text+0x90): In function `main':
fffff.c: undefined reference to `sqrt'
collect2: ld 返回 1
怎么回事啊?

0xfffff 发表于 2005-10-17 23:43:19

main() -------->没有定义类型 正确的int main()
sqrtmath.h 没有定义 要定义一下 #define sqrt(x) x*x

0xfffff 发表于 2005-10-17 23:46:28

#include <stdio.h>
#include <stdilb.h>
#include <math.h>
#define sqrt(x) x*x

int main() {
{
float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n", a, b, c, s);
printf("area=%7.2f\n", area);
return(0);
}

木悠悠 发表于 2005-10-18 10:03:51

谢谢,成功了

木悠悠 发表于 2005-10-18 10:15:06

main() -------->没有定义类型 正确的int main()
sqrtmath.h 没有定义 要定义一下 #define sqrt(x) x*x

"#define sqrt(x) x*x"是什么意思?

木悠悠 发表于 2005-10-18 10:17:33

是不是所有类似的情形都要这么定义一下?拜托举个例子好吗?

0xfffff 发表于 2005-10-18 12:24:27

#define 是预处理宏
也不是所有 这个方便你定义一些简单的算法
也可以用定义函数表示
int sqrt(x){
int x;
x=x*x;
}

木悠悠 发表于 2005-10-18 13:14:19

我照你的代码编译了一下,是可以编译了,可结果不对啊.
#include<stdio.h>
#include<math.h>
#define sqrt(x) x*x
main()
{
float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);
printf("area=%7.2f\n",area);
}

0xfffff 发表于 2005-10-18 13:29:16

#include<stdio.h>
#include<math.h>
#define sqrt(x) x*x
main()
{
float a,b,c,s,area;
int x;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
x=s*(s-a)*(s-b)*(s-c);
area=sqrt(x);
printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);
printf("area=%7.2f\n",area);
}

0xfffff 发表于 2005-10-18 13:31:06

#include<stdio.h>
#include<math.h>

main()
{
float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
x=s*(s-a)*(s-b)*(s-c);
area=sqrt(x);
printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);
printf("area=%7.2f\n",area);
}

int sqrt(x){
int x;
x=x*x;
}

0xfffff 发表于 2005-10-18 13:32:55

你有没有 输入错误....

木悠悠 发表于 2005-10-18 13:57:18

sqrt 是开根号啊...我输3,4,5进去,得到1296..

木悠悠 发表于 2005-10-18 13:59:32

你在自己机上编译试试看行不行?

0xfffff 发表于 2005-10-18 16:51:51

你慢慢试吧:shock::shock:

0xfffff 发表于 2005-10-18 16:55:11

你这是C还是C++我看了有点 麻痹
页: [1] 2
查看完整版本: 编译C语言时遇到了问题,求助!