首页 >后端开发 >C++ >为什么我的 C 代码会产生''wat'的多重定义”错误,如何修复它?

为什么我的 C 代码会产生''wat'的多重定义”错误,如何修复它?

Barbara Streisand
Barbara Streisand原创
2024-12-04 03:56:101020浏览

Why Does My C   Code Produce a

C 项目中“wat”的多个定义

给定的代码由四个文件组成:FileA.cpp、FileA.h、 FileB.cpp 和 FileB.h。编译时,遇到错误“multipledefinition of `wat'”。

FileB.h 定义了一个名为 'wat' 的整型变量,如下:

#ifndef FILEB_H_
#define FILEB_H_

int wat;
void world();


#endif /* FILEB_H_ */

由于这个头文件包含在 FileA.cpp 和 FileB.cpp 中,编译器检测到“wat”被定义了多次。出现这种情况是因为宏 FILEB_H_ 未在所有头文件中正确定义。

要解决此问题,应将头文件修改为如下:

FileA.h:

#ifndef FILEA_H_
#define FILEA_H_

#include "FileB.h"
void hello();

#endif /* FILEA_H_ */

Fil eB.h:

#ifndef FILEB_H_
#define FILEB_H_

extern int wat;  // Declare 'wat' as external
void world();


#endif /* FILEB_H_ */

FileB.cpp:

#include "FileB.h"

int wat = 0;  // Define 'wat' with its initial value
void world()
{
    // More code
}

作者在 FileB.h 中使用“extern”,我们通知编译器“wat”在其他地方定义,并且它不应该在当前文件中搜索其定义。然后在 FileB.cpp 中提供“wat”的实际定义,避免多重定义错误。

以上是为什么我的 C 代码会产生''wat'的多重定义”错误,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn