【发布时间】:2023-01-18 21:06:23
【问题描述】:
我有一个头文件,其中放置了一些全局常量变量。现在我需要另一个项目范围的可修改变量。但它会按预期给出链接器错误。我试图在不使用的情况下解决问题排队关键词。我的代码:
常量.h:
#ifndef CONSTANTS_H
#define CONSTANTS_H
namespace constants {
bool myVar;
}
#endif // CONSTANTS_H
我在我的课程中使用这个变量 constants::myVar。我得到了一个链接器错误。任何不使用内联的解决方案(为了向后编译器兼容性)?
【问题讨论】:
-
您遇到的链接器错误是什么?
-
如果在 constants.h 文件中的“常量”命名空间中有一个非常量变量,那么您就会感到困惑...
-
您是否研究过其他选择?全局变量可能会大大损害您的长期可维护性。对于没有单元测试的小项目来说不是那么重要,但是了解全局变量的替代方案是一件好事
-
您不应该将全局变量定义放在头文件中。相反,在标头中声明
void setMyVar(bool var)和bool getMyVar()并在源文件中定义这些函数。 -
@wohlstad 哇,它解决了这个问题。 Joris Timmermans 我笑了 :) 但我能说你是对的。