C++SDL代码::块:在头文件中声明指向全局可验证性的指针,同时避免多个包含问题

C++ SDL Code::blocks: declaring pointer to global veriable in header file, while avoiding multiple includion issues

本文关键字:指针 问题 包含 可验证 代码 文件 全局 声明 C++SDL      更新时间:2023-10-16

我正在修改游戏状态tuthttp://lazyfoo.net.让它作为single.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;

不过就我个人而言,我希望避免在你的应用程序中有很多全局状态。