gpt4 book ai didi

c++ - 将代码移动到另一个 header 后重新定义错误

转载 作者:行者123 更新时间:2023-11-30 03:41:33 27 4
gpt4 key购买 nike

所以我遇到了一个问题:我删除了一些编码(结构)并将其粘贴到一个新的头文件中。我在任何需要的地方都包含了新的头文件,所以它不应该给我一个错误,但是在我尝试构建我的 dll 文件之后,我收到大量错误,说我剪切/粘贴的那些结构是重新定义。我点击了其中一些“重新定义”和“原始”,同时我得到了相同的结构,这意味着只有其中一个,所以它不能是重新定义。我现在很困惑,我真的很感激一些帮助!提前致谢:)

编辑:我移动了这个:

struct Game_s
{
bool loaded;
bool FirstUser;
bool AlwaysVerfied;
bool DoingUnlockAll;
int Globaltimer;
int MaxUnlockAll;
time_t t;
};
Game_s Game;

从名为 MW2Class.h 的头文件到另一个名为 Structs.h 的类,如下所示:

#include "stdafx.h"
#include <stdio.h>
#include <string>
#include <xbox.h>

struct Game_s
{
bool loaded;
bool FirstUser;
bool AlwaysVerfied;
bool DoingUnlockAll;
int Globaltimer;
int MaxUnlockAll;
time_t t;
};
Game_s Game;

最佳答案

您的问题是您在头文件中声明了一个全局变量

Game_s Game;

将添加 Game 到您包含 header 的每个翻译单元(包含守卫不会阻止此操作)。当您进入链接阶段时,链接器将看到所有这些相同的全局变量,并且不知道如何处理它们。

如果您确实需要全局变量,则需要使用 extern 声明它并在一个翻译单元中定义它。有关更多信息,请参阅:Global variables in header file

关于c++ - 将代码移动到另一个 header 后重新定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37349707/

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