c++ - 如何获取在 Main.cpp 中声明的全局变量以便在 header 中访问

标签 c++ global-variables c-preprocessor

如何让全局变量出现在变量声明后包含的 header 中?我是这样安排的,但是在标题中,它没有被识别为已定义:

主要.cpp:

const int COUNT = 10;
void (* FUNCTION[COUNT])();
const char * DESCRIPTION[COUNT];

#include "TestFont.h"

testFont.h:

#define COUNTER_VAR = __COUNTER__;
DESCRIPTION[COUNTER_VAR] = "description";
FUNCTION[COUNTER_VAR] = func;
#undef COUNTER_VAR

在 header 中,DESCRIPTIONFUNCTION 被视为未定义,我如何才能使用它们?

免责声明:它 super 丑不是吗!这完全适用于 VS 中的沙盒项目,因此我可以使用 C++ 编写小型单文件测试或脚本,并尽可能少地进行 IDE 设置。目标是实现它,所以我需要做的就是在 main.cpp 中包含 header ,并且 main 将具有必要的函数指针和描述以将其列为控制台中的选项。请不要打分!

最佳答案

以下行在函数体之外是不合法的。

DESCRIPTION[COUNTER_VAR] = "description";
FUNCTION[COUNTER_VAR] = func;

您可能需要将其包装在辅助函数中。

static int init()
{
#define COUNTER_VAR = __COUNTER__;
   DESCRIPTION[COUNTER_VAR] = "description";
   FUNCTION[COUNTER_VAR] = func;
#undef COUNTER_VAR
}

并调用该函数。

static int dummy = init();

关于c++ - 如何获取在 Main.cpp 中声明的全局变量以便在 header 中访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32316896/

相关文章:

c++ - C++中面向对象的客户端套接字应用程序设计

python - python中的“全局名称未定义”概念

c++ - 迷宫功能在检测已删除的墙壁方面不起作用

c++ - std::vector emplace_back 可以从 vector 本身的元素复制构造吗?

python - 获取当前环境

c - 为什么C中全局变量的存储类别隐式定义为 "extern"?

c++ - GCC 和 VC++ 预处理器的意外行为

objective-c - 用于配置的 XCode 预处理器宏?

c++ - 扩展/重组宏元组

c++ - 将 vector<string> 作为函数参数传递时出现问题 C++