apue中重复定义的问题

晚上被APUE的一个小程序弄得很郁闷:有两个程序,14-1.c(含main,并且调用了set_fl.c)和set_fl.c,每个里面都包含了apue.h和apuee_err.h。编译的时候重复定义是很正常的。可是在apue_err.h中添加了ifndef和define,和endif之后,还是出现这个问题。我就很纳闷,查了好多地方也没搞明白到底是为什么。后来,hh来帮我看,也是很迷茫。最后发现apue_err.h中,有err_sys等几个函数的定义。猜测可能是这样的:编译的时候生成了两个.o的文件:14-1.o和set_fl.o,并且每个.o文件都包含err_sys等的定义,最后两个.o文件链接的时候,就自然会出现问题了。如果从apue_err.h中,把函数的定义单独拿出来,放在apue_err.c(可以放在/usr/lib里面),编译的时候可能就会为apue_err.c单独成立一个.o文件,和14-1.o和set_fl.o是并列的,这样就能避免重复定义。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值