gpt4 book ai didi

c++ - 在多个 .cpp 中包含相同的 header

转载 作者:太空宇宙 更新时间:2023-11-04 06:05:18 26 4
gpt4 key购买 nike

我正在尝试在许多其他 .cpp 文件中使用来自一个 .h 文件的数据(甚至函数),但我得到一个编译器区域,提示链接错误。我知道这将非常简单,但我正在用它伤害自己。我正在使用 Xcode,但我认为这不是问题所在,更有可能是我有点思考!

我的版本比较复杂,所以我将使用一个非常简单的示例来说明我正在寻找的内容。

如果我有一个头文件data1.h:

 int a,b; // etc

然后是一个 .cpp 文件,比如 setdataA.cpp:

 #include "data1.h"    
void set_a(int numb){ a=1;}

然后另一个,比如setdataB.cpp:

 #include "data1.h"    
void set_b(int numb){ b=10;}

我想知道我做错了什么,也许我是否应该尝试做这样的事情。

我什至尝试过交换

#include "data1.h"  

在setdataB.cpp中为

#include "setdataA.h"

还是不行!

最佳答案

首先,如果您提供实际错误,将会有所帮助。

其次,你应该用这样的 INCLUDE GUARD 包装你的标题内容:

#ifndef MY_UNIQUE_INCLUDE_GUARD
#define MY_UNIQUE_INCLUDE_GUARD
... // header contents
#endif

第三,您的问题可能是在两个 .cpp 文件中定义了整数 a 和 b(通过包含在 header 中),导致定义了多个符号。

相反,您可能想在 header 中声明它们而不定义它们:

extern int a;
extern int b;

然后,在 .cpp 文件中,定义它们:

int a;
int b;

只需在一个 .cpp 文件中定义它们。如果这对您的项目有意义,您可以在一个 .cpp 文件中定义 a,在另一个 .cpp 文件中定义 b。

关于c++ - 在多个 .cpp 中包含相同的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11508712/

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