在我的主要功能之前,我有一个名称空间Global
,其中包含一个常量静态变量:
#include "RaGaCCMainView.h"
#include <QApplication>
namespace Global {
const static bool isLittleEndian = [](){
union {
uint32_t i;
char c[4];
} bint = {0x01020304};
return bint.c[0] == 1;
}();
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
RaGaCCMainView w;
w.setAttribute(Qt::WA_QuitOnClose);
w.show();
return a.exec();
}
现在在RaGaCCMainView.h
中,我想将变量声明为外部变量:
extern const static bool Global::isLittleEndian;
这是我得到相应错误的地方:
C2653: 'Global': is not a class or namespace name
我只想在RaGaCCMainView.cpp
内使用全局变量:
void RaGaCCMainView::someFunction()
{
...
if(Global::isLittleEndian) {
...
}
}
这似乎是一个愚蠢的问题,但是我唯一无法回答或没有用的答案。我(显然)只想声明和定义Global::isLittleEndian
,然后在我想在这种情况下使用的任何类RaGaCCMainView
中使用它。
RaGaCCMainView
知道Global::isLittleEndian
存在并且具有什么值?答案 0 :(得分:-1)
我创建了一个Endianness.h
文件,该文件定义了预处理程序宏IS_LITTLE_ENDIAN
:
#ifndef ENDIANNESS_H
#define ENDIANNESS_H
#include <QtGlobal>
#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
#define IS_LITTLE_ENDIAN 1
#else
#define IS_LITTLE_ENDIAN 0
#endif
#endif // ENDIANNESS_H
我将此类包括在RaGaCCMainView
类中,并使用宏IS_LITTLE_ENDIAN
。