首页 >后端开发 >C++ >为什么我在 C 中遇到''wat'的多重定义”编译时错误?

为什么我在 C 中遇到''wat'的多重定义”编译时错误?

Susan Sarandon
Susan Sarandon原创
2024-12-08 07:04:16836浏览

Why Am I Getting a

C 中变量的多重定义

遇到“multipleDefinitions for wat”的编译时错误可能会令人困惑。让我们分析提供的源代码并找出问题。

在您的代码中,您有四个文件:FileA.cpp、FileA.h、FileB.cpp 和 FileB.h。编译时,编译器会检测到名为 wat 的变量的多个定义。

经检查,您已在 FileA.h 和 FileB.h 中定义了变量 wat:

// FileA.h
void hello();

#endif /* FILEA_H_ */

// FileB.h
int wat;
void world();

#endif /* FILEB_H_ */

当您代码编译时,头文件多次包含在编译单元中,导致变量wat重复定义。要解决此问题,您需要将 wat 的声明与其定义分开。

解决方案:

  1. 在 FileB.h 中将 wat 声明为外部变量:
extern int wat;

这通知编译器 wat 将被定义

  1. 在 FileB.cpp 中定义 wat:
int wat = 0;

现在,编译时,编译器会正确识别出在 FileB.h 中声明并定义的 wat在FileB.cpp中,解决多重定义错误。

以上是为什么我在 C 中遇到''wat'的多重定义”编译时错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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