[英]How to declare a global const initialized by a function in the header?
我在项目的许多地方使用的标头中有一个像这样的旧源代码:
const int myVar = myFunc();
我想要的是:
myFunc()
在全局变量初始化阶段也应仅被调用一次。 现在的问题是,我从编译的.cc
收到此警告:
In file included from mySource.cc:7:0:
myHeader.h:59:11: warning: ‘myVar’ defined but not used [-Wunused-variable]
const int myVar = myFunc();
^
注意, mySource.cc
确实不使用myVar
,因此警告还可以,但是其他来源可以。
我认为,最好的办法是仅在标头中声明myVar
,如下所示:
myHeader.h:
int myVar;
mySource.cc:
int myVar = myFunc();
但是在这种情况下,我无法将其声明为const。 此变量应为const。 是的,我知道它将在可写的内存页面上,只有c ++会将其视为常量,但这正是我想要的。
因此,我也想避免此警告。 此外,我认为myFunc()
会被多次调用,这是我不希望的。
我怎样才能做到这一点?
您将必须拆分定义和声明,并在cpp文件中定义变量,如下所示:
在.h中:
extern const int myVar;
在.cpp中:
const int myVar = myFunc();
在C ++ 17中,可以使用内联变量:
inline const int myVar = myFunc();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.