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中文网其他相关文章!