在头文件里定义的函数在编译时说未定义?

c文件如下:#include"apue.h"#defineBUFFSIZE4096intmain(void){intn;charbuf[BUFFSIZE];while((... c文件如下:
#include "apue.h"
#define BUFFSIZE 4096
int main(void)
{
int n;
char buf[BUFFSIZE];

while((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0)
if(write(STDOUT_FILENO, buf, n) != n)
err_sys("write error");
if(n < 0)
err_sys("read error");
exit(0);
}
文件头apue.h如下:
#include <stdio.h>//For convenience
#include <stdlib.h>//For convenience
#include <stddef.h>//For offsetof
#include <string.h>//For convenience
#include <unistd.h>//For convenience

void err_sys(const char *, ... );
最后的这个err_sys都已经说明(这个不知道是“声明”还是“定义”,所以就“说明”了)了啊。。但是编译的时候。。。
glorylucifer@HelloWorld:~/Desktop$ gcc -o 1-2.out 1-2.c
/tmp/cc0CdCJF.o: In function `main':
1-2.c:(.text+0x47): undefined reference to `err_sys'
1-2.c:(.text+0x81): undefined reference to `err_sys'
collect2: ld returned 1 exit status
glorylucifer@HelloWorld:~/Desktop$

这个是什么意思呢?这是《Unix环境高级编程》的一个例子,这本书是只在2.4内核里测试通过的,难道不适用于现在的2.6内核?我该怎么办?
soso_zoo同学,我看了,printf()的定义是:
int printf(const char *, ...);
于是我改,我把这个err_sys改成
int err_sys(const char *, ...);
它还是报错,说未定义
展开
 我来答
soso_zoo
推荐于2016-12-06 · TA获得超过251个赞
知道答主
回答量:125
采纳率:0%
帮助的人:132万
展开全部
void err_sys(const char *, ... );
这样只是声明了一下,没有对其定义,当然会报错,这个就相当于printf()的函数,只是它自己定义了一个新的,你去stdio.h头文件里看看printf()怎么定义的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式