- 论坛徽章:
- 0
|
在学APUE,看到第八章,程序清单8_4中的程序需要调用8_3中定义的函数void pr_exit(int status),于是我把这两个.c文件放在同一个文件夹下,然后用命令 cc -o a.out pr_exit.c exitstatus.c 对其进行编译,但编译报错: multiple definition of 'err_sys(char const*, ...)' 同样其他几个错误处理函数也是多重定义的问题。
我在写APUE程序时对apue.h和error.c的处理方式是把apue.h和error.c放在usr/include/文件夹下,并在apue.h中最后一行#endif前面添加了#include <error.c> 后来又在error.c文件首尾添加了
#ifndef ERROR_C
#define ERROR_C
...
#endif(此句在文件尾)
后来我换了一种方式,逐步编译,先作编译预处理,再编译,再汇编,生成了两个.o文件后最后再用 cc -o a.out pr_exit.o exitstatus.o 进行编译,还是报和上面一样的错误。
之前编译程序的时候都是单文件的源程序,是没有问题的。但这次是两个.c文件一起编译,就出现了多重定义的问题,求各位帮忙啊~ 多谢了~! |
|