gpt4 book ai didi

c++ - 包含头文件错误: multiple definition

转载 作者:太空狗 更新时间:2023-10-29 21:25:38 27 4
gpt4 key购买 nike

我在程序中有一个非常简单的文件系统。

有:main.cpp 包含worker.h,worker.h 和worker.cpp 包含worker.h

worker.h 有 Header guard 并声明了一些 main.cpp 和 worker.cpp 都需要的变量,它还有一些函数声明。

#ifndef __WORKER_H_INCLUDED__
#define __WORKER_H_INCLUDED__

bool x;
int y;

void somefunction( int w, int e );

#endif

通过其他一些线程和谷歌搜索结果,我了解到 header 保护可以保护您免受单个源文件中的多个包含,而不是来自多个源文件。

所以我可以预料到链接器错误。

我的问题是

  1. 为什么只有变量而不是函数有多个定义错误?据我了解,这两个都只在头文件 worker.h 中声明而未定义

  2. 如何在没有多定义链接器错误的情况下使 a 变量可用于 main.cpp 和 worker.cpp?

最佳答案

Why there are multiple definition errors for only variables and not for functions ? As far as my understanding goes both of those are only declared and not defined in the header file worker.h

因为您定义了变量。这样他们只被宣布:

extern bool x;
extern int y;

但是你必须在一个cpp文件中定义它们。 :

bool x = true;
int y = 42;

关于c++ - 包含头文件错误: multiple definition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13680065/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com