The `__has_feature` macro is a clang extension that works like a macro. If
zint is being compiled using a compiler other then clang, `__has_feature`
is not defined. As it is not defined, it cannot be used as a function call
expression. Any environment that doesn't have `__has_feature` should prevent
the preprocessor from "seeing" the invokation of the macro, as invoking
undefined macros is not supported by the C language.
The usual procedure to assure this would be a construction like
\#if defined(__has_feature)
\# if __has_feature(...)
\# endif
\#endif
which, combined with the GCC check we have here, would result in a
3 level nesting of if and elseif expressions .. and that's without
covering microsoft's compiler.
For this purpose, Qt >= 5.13 has been defining the `__has_feature`
macro on non-clang environments, while defining all (clang) features
to not be available. This allows to write feature checks with "less"
nesting, as we have here.
Mimic Qt-5.13's behavior and provide the `__has_feature` macro if
it's not provided otherwise (either by clang or by Qt), allowing the
function-call-like expression to be parsed on those systems.
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test