关于源文件的#define重复引用的问题

本文探讨了C语言中头文件#include的本质是拷贝,当头文件被多个源文件引用时可能导致重复定义错误。解决方案是避免在头文件中定义函数,而使用extern关键字声明,并将函数定义放在单独的.c文件中,以防止链接时出现冲突。
摘要由CSDN通过智能技术生成

#include的本质是拷贝

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASlJsaXV6eg==,size_20,color_FFFFFF,t_70,g_se,x_16

A.h,B.h,C.h为头文件

(.h文件是C语言和【C++】语言的头文件,一般在【.h】类的头文件里面只放入函数声明,宏定义,函数原型,而具体的实现在【.cpp】文件里面。)

Test.c为源文件

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASlJsaXV6eg==,size_20,color_FFFFFF,t_70,g_se,x_16

假如按照上图的多文件结构进行编译,首先A.h会被拷贝到B.h和C.h,然后Test.c引入了B.h和C.h,此时在预编译的时候,就会拷贝出两份A.h,在链接的时候就会出现两段相同的代码,导致出现重复命名错误。

所以就算按照上图中使用了#ifndef开关,也还是不能避免重复出现被引用的头文件。那么想要避免这种错误,就得注意到,不要在 .h 文件中去进行函数的定义,要换成使用extern关键字去对函数进行声明,至于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值