预处理器在评估 `QT_CONFIG(printer)` 时除以零
Preprocessor division by zero while evaluating `QT_CONFIG(printer)`
使用 g++(从用 qmake 生成的 Makefile)编译
#if !QT_CONFIG(printer)
// do something
#endif
在两个 g++ (7.3.0) 上都出现预处理器错误
test.cpp:25:6: error: division by zero in #if
#if !QT_CONFIG(printer)
和叮当声 (6.00)
test.cpp:25:6: error: division by zero in preprocessor expression
#if !QT_CONFIG(printer)
^~~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:84:30: note: expanded from macro 'QT_CONFIG'
#define QT_CONFIG(feature) (1/QT_FEATURE_##feature == 1)
~^~~~~~~~~~~~~~~~~~~~~
1 error generated.
其中 clang++ 给出了更详细的输出。 printer
未启用,因此建议使用宏进行条件编译。 QT版本为5.9.5。任何建议(错误用法?)表示赞赏。
我认为你不应该关注那个宏。该宏的目的是在 QT_FEATURE_printer 为零时简单地使您的编译代码崩溃。该代码并非旨在以其他方式工作。
而不是有条件地使用宏,尝试找出为什么 QT_FEATURE_printer 为零并包含/配置依赖项以更改它(它似乎在 printsupport/qtprintsupport-config.h 中定义)。
如果您将 qt 源更新为使用新功能的东西而没有再次 运行ning configure,就会发生这种情况。当您 运行 配置新功能时。
这已在 Qt 5.12.3 中修复。 notepad.cpp 的较新版本开始于:
#include <QFile>
#include <QFileDialog>
#include <QTextStream>
#include <QMessageBox>
#if defined(QT_PRINTSUPPORT_LIB)
#include <QtPrintSupport/qtprintsupportglobal.h>
#if QT_CONFIG(printer)
#if QT_CONFIG(printdialog)
#include <QPrintDialog>
#endif // QT_CONFIG(printdialog)
#include <QPrinter>
#endif // QT_CONFIG(printer)
#endif // QT_PRINTSUPPORT_LIB
#include <QFont>
#include <QFontDialog>
使用 g++(从用 qmake 生成的 Makefile)编译
#if !QT_CONFIG(printer)
// do something
#endif
在两个 g++ (7.3.0) 上都出现预处理器错误
test.cpp:25:6: error: division by zero in #if
#if !QT_CONFIG(printer)
和叮当声 (6.00)
test.cpp:25:6: error: division by zero in preprocessor expression
#if !QT_CONFIG(printer)
^~~~~~~~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:84:30: note: expanded from macro 'QT_CONFIG'
#define QT_CONFIG(feature) (1/QT_FEATURE_##feature == 1)
~^~~~~~~~~~~~~~~~~~~~~
1 error generated.
其中 clang++ 给出了更详细的输出。 printer
未启用,因此建议使用宏进行条件编译。 QT版本为5.9.5。任何建议(错误用法?)表示赞赏。
我认为你不应该关注那个宏。该宏的目的是在 QT_FEATURE_printer 为零时简单地使您的编译代码崩溃。该代码并非旨在以其他方式工作。
而不是有条件地使用宏,尝试找出为什么 QT_FEATURE_printer 为零并包含/配置依赖项以更改它(它似乎在 printsupport/qtprintsupport-config.h 中定义)。
如果您将 qt 源更新为使用新功能的东西而没有再次 运行ning configure,就会发生这种情况。当您 运行 配置新功能时。
这已在 Qt 5.12.3 中修复。 notepad.cpp 的较新版本开始于:
#include <QFile>
#include <QFileDialog>
#include <QTextStream>
#include <QMessageBox>
#if defined(QT_PRINTSUPPORT_LIB)
#include <QtPrintSupport/qtprintsupportglobal.h>
#if QT_CONFIG(printer)
#if QT_CONFIG(printdialog)
#include <QPrintDialog>
#endif // QT_CONFIG(printdialog)
#include <QPrinter>
#endif // QT_CONFIG(printer)
#endif // QT_PRINTSUPPORT_LIB
#include <QFont>
#include <QFontDialog>