我有一个较旧的源代码,就像在我的项目中许多地方使用的标题中一样:
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()
会被多次调用,我不想要。
我该怎么做?
答案 0 :(得分:4)
您必须拆分定义和声明,并在cpp文件中定义变量,如下所示:
在.h:
extern const int myVar;
在.cpp:
const int myVar = myFunc();
在C ++ 17中,内联变量将是最佳选择:
inline const int myVar = myFunc();