栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

#include的本质是拷贝

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

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

Test.c为源文件

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

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

如下图,这样对Add函数(或者全局变量)进行定义就不会在链接时候出现错误了。

所以 .h 文件只能出现声明,不能出现对函数(或者全局变量)的定义。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836383.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号