httpdexport.c很多重定义

httpdexport.c很多重定义,第1张

HTTPdexport.c文件中的重定义可能是由于它包含了多个头文件,而这些头文件中可能存在重复定义的变量或函数。为了解决这个问题,可以使用#ifndef和#define来避免重复定义。

其实这是C++中比较基础的问题。

还有种情况是定义了函数,但在另个文件中准备用#include打开,但是结果还是会出现。

直接包含不就在两个cpp文件中都定义了相同的函数/变量吗,链接时会出现重复定义(你自己试试),所以需要使用extren申明一下即可,他们使用的是同一个实体。

#ifndef identifier_h

#define identifier_h

....

#endif

这套条件编译是为了防止同一个.c文件中包含多个相同.h文件的(比如有一个.c文件包含了a.h,a.h又包含了b.h,那么当你在这个.c文件中同时包含了a.h和b.h时,因为有上面的条件编译的关系而不会出错)。因为编译器在编译的时候是按照.c文件为单位编译的,每个.c文件编译成.o文件(linux系统)或者.obj(windows系统),然后再将这些.o文件链接起来,最后与运行库链接形成可执行文件(elf或exe文件)。

你在两个.c文件中包含了同一个.h文件。这根本和条件编译没什么关系。你在.h文件中定义了全局变量a, b, c。那么就表示你两个.c文件中,每个.c文件中都有这样的全局变量定义:int a, b, c当每个.c文件单独编译当然没有问题,但是当它们链接起来的时候就出现问题了:两个.c文件中都有变量a b c,所以当然是重复定义啊。问题是出在链接的时候的。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/7940266.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存