【发布时间】:2021-05-06 17:27:35
【问题描述】:
我在 VScode 中编译时遇到了问题,而不是在 Visual Studio 中。
我的项目的包含文件夹中有一个头文件config.h。请注意,我已将 build_flags = -I include 添加到 platformio.ini。在config.h 中,我需要为我需要的选定数量的全局变量做一些声明。其他一切都是用指针等完成的。
我有两个问题。
- 在 config.h 中声明变量时,例如
int myVar,我得到一个多重声明错误。为什么? - 我可以将变量声明为
extern int myVar。但随后我需要在 .cpp 文件中重新声明变量 myVar,例如 main.cpp。如何做到最好?
最终,我如何在头文件中声明一个全局变量,将该头文件包含在其他几个文件中,然后全局使用该变量? (这主要是为了创建队列和信号量)
【问题讨论】:
-
使用
extern int myVar选项。是的,您必须在所有 .cpp 文件中重新定义myVar。 -
您不需要在 .cpp 文件中重新声明变量;您需要在 .cpp 文件中定义它。 声明说“某处有一个具有此名称和此类型的变量”。一个定义说“这是一个具有这个名称和这个类型的变量”。一个变量可以有任意多的声明;你只能有一个定义。
-
感谢您的回复。为了简单起见,我是否应该创建一个随附的 config.cpp 文件来定义变量?我想尽可能地保持模块化。
标签: c++ global-variables