【发布时间】:2017-01-25 20:18:07
【问题描述】:
我的应用程序可能在仍然默认为 Qt4.x 而不是 Qt5.x 的系统上使用,并且我试图做一个版本的“快速而肮脏”的端口,可以编译/链接并与任一主要版本一起运行的图书馆。我想知道解决 Qt4.x 中没有 Q_NULLPTR 的最佳方法是什么?我看到this SO 回答中提到的链接,它表示定义为:
#ifdef Q_COMPILER_NULLPTR
# define Q_NULLPTR nullptr
#else
# define Q_NULLPTR NULL
#endif
所以我应该只使用:
contains(QT_MAJOR_VERSION, 4) {
DEFINES += Q_NULLPTR=NULL
}
在我的qmake 项目文件中?
【问题讨论】:
-
为什么在你的应用程序中使用
Q_NULLPTR而不是nullptr?如果您使用 C++11 编译器,那么您使用的 Qt 版本无关紧要。 -
我或许应该改写为“我正在贡献的 FOSS 应用程序”——几年前我们切换到 Qt 5.x 后,我们就开始使用 Q_NULLPTR——我试图找到一种方法回到与 Qt4.x 兼容的状态并尽可能少地进行更改;而且我不相信使用 Qt4.x 的人会使用 C++11 编译器(例如,他们可能使用
gcc4.7 而不是 4.9)...