gpt4 book ai didi

C++ SDL Code::blocks:在头文件中声明指向全局变量的指针,同时避免多重包含问题

转载 作者:行者123 更新时间:2023-11-30 02:57:18 26 4
gpt4 key购买 nike

我正在修改来自 http://lazyfoo.net 的游戏状态 tut .让它作为单个 .cpp 工作;我已将所有代码分成多个文件,现在遇到了问题。我试图在 globals.h 文件中初始化,然后在 globals.cpp 文件中声明。其他 .cpp 文件需要访问 currentState 指针,而不会出现多重包含问题。

//globals.h
cGameState *currentState;

//globals.cpp
//Game state object
cGameState *currentState = NULL;

我尝试在头文件中初始化之前添加 Extern,但它抛出了一个不喜欢该类型的错误。有全局指针这样的东西吗?抱歉,如果我使用了错误的词汇,我离专家还很远,但我感觉很接近;我仍然缺少一些东西。

最佳答案

extern 正是您在头文件中想要的,但它需要是小写的 E。您的术语不太正确 - 您的头文件需要一个声明而只有一个(感谢“单一定义规则”).cpp 文件需要一个定义

例如在头文件中:

//globals.h
extern cGameState *currentState; // declare currentState

在 .cpp 文件中:

// this makes the compiler check the types match
#include "globals.h"
//globals.cpp
//Game state object
cGameState *currentState = NULL;

虽然我个人希望避免在您的应用程序中包含大量全局状态。

关于C++ SDL Code::blocks:在头文件中声明指向全局变量的指针,同时避免多重包含问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14760170/

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