在Qt文档中,它表示qreal
是
除非Qt配置了-qreal float选项,否则Typedef为double。
这基本上意味着ARM设备上几乎总是double
但float
。
我想使用qreal
文字,但我不知道如何编写它们。
qreal someValue = calcFunc();
qreal min = qMin(someValue, 0.0);
其中0.0
为double
字面值,0.0f
为float
字面值。在ARM上,这是一个编译错误,因为没有qMin(float, double)
函数。
我可以写static_cast<qreal>(0.0)
,但这看起来过于冗长。
那么如何定义qreal
字面值?
答案 0 :(得分:3)
您可以使用C ++ 11 Button HTML Code:
#include <QtCore>
constexpr qreal operator "" _qr(long double a){ return qreal(a); }
int main() {
qreal a = 3.0_qr;
Q_ASSERT(qMin(a, 4.0_qr) == a);
}
如果您的平台上没有它们,您可以在需要时明确构建qreals:
using _qr = qreal;
int main() {
qreal a = _qr(3.0);
Q_ASSERT(qMin(a, _qr(4.0)) == a);
}