2023年5月28日,周日早上:

今天早上写麻雀键值数据库时,编译代码的时候出现了这个错误


出现错误的原因:

你在定义你自己的头文件时,没有采用“Include Guards”(或者叫Head Guards)来避免头文件被重复包含。

有时候,在不同的源文件中都需要包含同一个头文件,这个头文件可能包含多个类的定义和其他一些代码。但是,如果源文件在编译时都包含了该头文件,则最终链接将产生重复符号错误(例如符号名称相同但地址不同的函数)。

解决办法:

把你的头文件的内容写在下面的代码中:

//下面是你的头文件的名字的大写形式
#ifndef YOURHEADFILENAME_H   //如果头文件没定义过,就执行下面的#define和endif之前的内容
#define YOURHEADFILENAME_H


//你的头文件的内容
class YourClass{

};

#endif

其实就是把整个头文件的内容包括在了ifndef...endif中,如果头文件没定义过,就执行define和define...endif中间的内容;如果头文件定义过了,就跳过整个ifndef...endif中间的内容,达到了当多个源文件都包含这个头文件时编译器编译时不会重复定义这个头文件的效果。

举例说明:

现在我要自定义一个叫做Car.h的头文件

#ifndef CAR_H
#define CAR_H

#include<iostream>

class Car{

private:
    std::string color;
    std::string owner;
};

#endif

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐