在头文件里定义的函数在编译时说未定义?
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 *, ...);
它还是报错,说未定义 展开
#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 *, ...);
它还是报错,说未定义 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |