为何gcc不能识别部分c函数?

软件和网站开发以及相关技术探讨
cr2121
帖子: 46
注册时间: 2009-04-25 9:24

为何gcc不能识别部分c函数?

#1

帖子 cr2121 » 2009-10-15 19:31

我编了一个简单的c程序(我刚学习c),程序如下:

代码: 全选

#include <stdio.h>
#include <math.h>
main ()
{
	int i=1;
	float s=0,t;
	do
	{
		t=1.0/(i*i);
		s=s+t;
		i++;
	}while(t>0.0045);
printf ("i=%d\ns=%10f\n",i,s);
getch();
}
其中用getch()实现安任意键继续的功能,但用gcc编译时却提示不能识别getch() ?后来我试了下getchar()没有报错,能够识别
还有用pow() 实现x的y次方,gcc同样提示不能识别pow这是为何?
是我的c错了,还是有什么东西没有安装?
他山之石,可以攻玉
史上最好用播放器http://tg.player.qq.com/cgi-bin/download?id=411533646
头像
懒蜗牛Gentoo
论坛版主
帖子: 7353
注册时间: 2007-03-02 17:36
系统: Linux Mint

Re: 为何gcc不能识别部分c函数?

#2

帖子 懒蜗牛Gentoo » 2009-10-15 19:36

win下的函数跟lin下的函数是不一样的
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

Re: 为何gcc不能识别部分c函数?

#3

帖子 cnkilior » 2009-10-15 19:41

man getch 写了:

代码: 全选

getch(3NCURSES)                                                getch(3NCURSES)

NAME
       getch, wgetch, mvgetch, mvwgetch, ungetch, has_key - get (or push back)
       characters from curses terminal keyboard

SYNOPSIS
       #include <curses.h>

       int getch(void);
       int wgetch(WINDOW *win);
       int mvgetch(int y, int x);
       int mvwgetch(WINDOW *win, int y, int x);
       int ungetch(int ch);
       int has_key(int ch);
pow()没有问题
cr2121
帖子: 46
注册时间: 2009-04-25 9:24

Re: 为何gcc不能识别部分c函数?

#4

帖子 cr2121 » 2009-10-15 19:51

楼上的能不能浅显一点?我好像看不懂唉!我才学这玩意儿。
高手一定要不吝赐教啊,我很迷茫啊!
他山之石,可以攻玉
史上最好用播放器http://tg.player.qq.com/cgi-bin/download?id=411533646
dbzllx
帖子: 29
注册时间: 2008-10-18 23:44

Re: 为何gcc不能识别部分c函数?

#5

帖子 dbzllx » 2009-10-16 16:11

就是让你#include <curses.h>这文件吧
cr2121
帖子: 46
注册时间: 2009-04-25 9:24

Re: 为何gcc不能识别部分c函数?

#6

帖子 cr2121 » 2009-10-16 16:31

根本没有这个头文件啊 :em20
他山之石,可以攻玉
史上最好用播放器http://tg.player.qq.com/cgi-bin/download?id=411533646
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 为何gcc不能识别部分c函数?

#7

帖子 tusooa » 2009-10-17 0:53

export CFLAGS=-lm

代码: 全选

] ls -ld //
头像
wzssyqa
帖子: 4010
注册时间: 2008-04-07 17:36
来自: 泰安人在阜新

Re: 为何gcc不能识别部分c函数?

#8

帖子 wzssyqa » 2009-10-17 0:54

tusooa 写了:export CFLAGS=-lm
也可以在命令行上加上 -lm
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 为何gcc不能识别部分c函数?

#9

帖子 BigSnake.NET » 2009-10-17 1:01

getch 不是标准C函数
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

Re: 为何gcc不能识别部分c函数?

#10

帖子 xhy » 2009-10-17 5:15

代码: 全选

#include <stdio.h>
#include <sys/ioctl.h>
#include <termios.h>

int getch( );

int main( )
{
    char ch;
    while(1){
         ch = getch( );
         printf("You Pressed %c\n", ch);
        if(ch == 'E')
             break;
     }
}

int getch()
{
    char ch;
    struct termios save, ne;
     ioctl(0, TCGETS, &save);
     ioctl(0, TCGETS, &ne);
     ne.c_lflag &= ~(ECHO | ICANON);
     ioctl(0, TCSETS, &ne);
     read(0, &ch, 1);
     ioctl(0, TCSETS, &save);
    return ch;
}
目前负债150多万
amani153
帖子: 1
注册时间: 2009-10-21 11:52

Re: 为何gcc不能识别部分c函数?

#11

帖子 amani153 » 2009-10-21 13:26

源代码里添加 #include<curses.h>

编译命令:gcc -test.c -lcurses //注:假设test.c是C文件名
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 为何gcc不能识别部分c函数?

#12

帖子 lilydjwg » 2009-10-21 14:11

BigSnake.NET 写了:getch 不是标准C函数
:em11 getch()是conio.h里的哇
头像
aqlinf
帖子: 295
注册时间: 2009-10-09 16:21

Re: 为何gcc不能识别部分c函数?

#13

帖子 aqlinf » 2009-10-27 17:48

看看这篇文章,说得不错!
xiaolei1213
帖子: 70
注册时间: 2009-09-03 16:00
来自: 石家庄

Re: 为何gcc不能识别部分c函数?

#14

帖子 xiaolei1213 » 2009-11-22 0:17

数学函数的话,虽然开头已经include<math.h>了,但是编译的时候还需要加上 -m 参数,比如源文件 example.c 编译生成example.out可执行文件,编译命令为
gcc example.c -m -o example.out
-o参数不用我说了吧?
我也是刚刚开始学的,以后可以多交流一下

代码: 全选

菜鸟学飞中,希望大家多多帮助!
头像
zhu527812567
帖子: 883
注册时间: 2009-11-17 12:29
联系:

Re: 为何gcc不能识别部分c函数?

#15

帖子 zhu527812567 » 2009-11-22 0:48

= = 的确。。-lm很重要
顺便一提 编译C++程序就没必要-lm。。
因为libstdc++依赖libm...
回复