Provide documentation for qcompilerdetection.h header
The description of the macros in this header should not belong to <QtGlobal>, so move it to a separate documentation page. Task-number: QTBUG-106154 Change-Id: Ic31604b96d9ebea6e8aac285b00a8d4c82b15c9a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
d77cf0647e
commit
f1a651d341
@ -7,6 +7,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
#pragma qt_class(QtCompilerDetection)
|
||||||
#pragma qt_sync_skip_header_check
|
#pragma qt_sync_skip_header_check
|
||||||
#pragma qt_sync_stop_processing
|
#pragma qt_sync_stop_processing
|
||||||
#endif
|
#endif
|
||||||
|
394
src/corelib/global/qcompilerdetection.qdoc
Normal file
394
src/corelib/global/qcompilerdetection.qdoc
Normal file
@ -0,0 +1,394 @@
|
|||||||
|
// Copyright (C) 2022 The Qt Company Ltd.
|
||||||
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\headerfile <QtCompilerDetection>
|
||||||
|
\inmodule QtCore
|
||||||
|
\title Compiler-specific Macro Definitions
|
||||||
|
\ingroup funclists
|
||||||
|
|
||||||
|
\brief The <QtCompilerDetection> header file includes various
|
||||||
|
compiler-specific macros.
|
||||||
|
|
||||||
|
The <QtCompilerDetection> header file provides a range of macros (Q_CC_*)
|
||||||
|
that are defined if the application is compiled using the specified
|
||||||
|
compiler. For example, the Q_CC_SUN macro is defined if the application is
|
||||||
|
compiled using Forte Developer, or Sun Studio C++.
|
||||||
|
|
||||||
|
The purpose of these macros is to enable programmers to add
|
||||||
|
compiler-specific code to their application.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_SYM
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using Digital Mars C/C++
|
||||||
|
(used to be Symantec C++).
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_MSVC
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using Microsoft Visual
|
||||||
|
C/C++, Intel C++ for Windows.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_CLANG
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using Clang.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_BOR
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using Borland/Turbo C++.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_WAT
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using Watcom C++.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_GNU
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using GNU Compiler Collection (GCC).
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_COMEAU
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using Comeau C++.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_EDG
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using Edison Design Group
|
||||||
|
C++.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_OC
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using CenterLine C++.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_SUN
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using Forte Developer, or
|
||||||
|
Sun Studio C++.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_MIPS
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using MIPSpro C++.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_DEC
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using DEC C++.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_HPACC
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using HP aC++.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_USLC
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using SCO OUDK and UDK.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_CDS
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using Reliant C++.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_KAI
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using KAI C++.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_INTEL
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
\obsolete
|
||||||
|
|
||||||
|
This macro used to be defined if the application was compiled with the old
|
||||||
|
Intel C++ compiler for Linux, macOS or Windows. The new oneAPI C++ compiler
|
||||||
|
is just a build of Clang and therefore does not define this macro.
|
||||||
|
|
||||||
|
\sa Q_CC_CLANG
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_HIGHC
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using MetaWare High C/C++.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_PGI
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using Portland Group C++.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CC_GHS
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Defined if the application is compiled using Green Hills
|
||||||
|
Optimizing C++ Compilers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro void Q_FALLTHROUGH()
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
\since 5.8
|
||||||
|
|
||||||
|
Can be used in switch statements at the end of case block to tell the compiler
|
||||||
|
and other developers that that the lack of a break statement is intentional.
|
||||||
|
|
||||||
|
This is useful since a missing break statement is often a bug, and some
|
||||||
|
compilers can be configured to emit warnings when one is not found.
|
||||||
|
|
||||||
|
\sa Q_UNREACHABLE()
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_LIKELY(expr)
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
\since 4.8
|
||||||
|
|
||||||
|
\brief Hints to the compiler that the enclosed condition, \a expr, is
|
||||||
|
likely to evaluate to \c true.
|
||||||
|
|
||||||
|
Use of this macro can help the compiler to optimize the code.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
\snippet code/src_corelib_global_qglobal.cpp qlikely
|
||||||
|
|
||||||
|
\sa Q_UNLIKELY(), Q_ASSUME()
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_UNLIKELY(expr)
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
\since 4.8
|
||||||
|
|
||||||
|
\brief Hints to the compiler that the enclosed condition, \a expr, is
|
||||||
|
likely to evaluate to \c false.
|
||||||
|
|
||||||
|
Use of this macro can help the compiler to optimize the code.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
\snippet code/src_corelib_global_qglobal.cpp qunlikely
|
||||||
|
|
||||||
|
\sa Q_LIKELY()
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_CONSTINIT
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
\since 6.4
|
||||||
|
|
||||||
|
\brief Enforces constant initialization when supported by the compiler.
|
||||||
|
|
||||||
|
If the compiler supports the C++20 \c{constinit} keyword, Clang's
|
||||||
|
\c{[[clang::require_constant_initialization]]} or GCC's \c{__constinit},
|
||||||
|
then this macro expands to the first one of these that is available,
|
||||||
|
otherwise it expands to nothing.
|
||||||
|
|
||||||
|
Variables marked as \c{constinit} cause a compile-error if their
|
||||||
|
initialization would have to be performed at runtime.
|
||||||
|
|
||||||
|
\note Constant-initialized variables may still have load-time impact if
|
||||||
|
they have non-trivial destruction.
|
||||||
|
|
||||||
|
For constants, you can use \c{constexpr} since C++11, but \c{constexpr}
|
||||||
|
makes variables \c{const}, too, whereas \c{constinit} ensures constant
|
||||||
|
initialization, but doesn't make the variable \c{const}:
|
||||||
|
|
||||||
|
\table
|
||||||
|
\header \li Keyword \li Added \li immutable \li constant-initialized
|
||||||
|
\row \li \c{const} \li C++98 \li yes \li not required
|
||||||
|
\row \li \c{constexpr} \li C++11 \li yes \li required
|
||||||
|
\row \li \c{constinit} \li C++20 \li no \li required
|
||||||
|
\endtable
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_DECL_EXPORT
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
This macro marks a symbol for shared library export (see
|
||||||
|
\l{sharedlibrary.html}{Creating Shared Libraries}).
|
||||||
|
|
||||||
|
\sa Q_DECL_IMPORT
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_DECL_IMPORT
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
This macro declares a symbol to be an import from a shared library (see
|
||||||
|
\l{sharedlibrary.html}{Creating Shared Libraries}).
|
||||||
|
|
||||||
|
\sa Q_DECL_EXPORT
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_DECL_CONSTEXPR
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
\deprecated [6.4] Use the \c constexpr keyword instead.
|
||||||
|
|
||||||
|
This macro can be used to declare variable that should be constructed at compile-time,
|
||||||
|
or an inline function that can be computed at compile-time.
|
||||||
|
|
||||||
|
\sa Q_DECL_RELAXED_CONSTEXPR
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_DECL_RELAXED_CONSTEXPR
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
\deprecated [6.4] Use the \c constexpr keyword instead.
|
||||||
|
|
||||||
|
This macro can be used to declare an inline function that can be computed
|
||||||
|
at compile-time according to the relaxed rules from C++14.
|
||||||
|
|
||||||
|
\sa Q_DECL_CONSTEXPR
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_DECL_NOTHROW
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
\since 5.0
|
||||||
|
\deprecated [6.4] Use the \c noexcept keyword instead.
|
||||||
|
|
||||||
|
This macro marks a function as never throwing, under no
|
||||||
|
circumstances. If the function does nevertheless throw, the
|
||||||
|
behavior is undefined.
|
||||||
|
|
||||||
|
\sa Q_DECL_NOEXCEPT, Q_DECL_NOEXCEPT_EXPR()
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_DECL_NOEXCEPT
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
\since 5.0
|
||||||
|
\deprecated [6.4] Use the \c noexcept keyword instead.
|
||||||
|
|
||||||
|
This macro marks a function as never throwing. If the function
|
||||||
|
does nevertheless throw, the behavior is defined:
|
||||||
|
std::terminate() is called.
|
||||||
|
|
||||||
|
|
||||||
|
\sa Q_DECL_NOTHROW, Q_DECL_NOEXCEPT_EXPR()
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_DECL_NOEXCEPT_EXPR(x)
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
\since 5.0
|
||||||
|
\deprecated [6.4] Use the \c noexcept keyword instead.
|
||||||
|
|
||||||
|
This macro marks a function as non-throwing if \a x is \c true. If
|
||||||
|
the function does nevertheless throw, the behavior is defined:
|
||||||
|
std::terminate() is called.
|
||||||
|
|
||||||
|
|
||||||
|
\sa Q_DECL_NOTHROW, Q_DECL_NOEXCEPT
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_DECL_OVERRIDE
|
||||||
|
\since 5.0
|
||||||
|
\deprecated
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
This macro can be used to declare an overriding virtual
|
||||||
|
function. Use of this markup will allow the compiler to generate
|
||||||
|
an error if the overriding virtual function does not in fact
|
||||||
|
override anything.
|
||||||
|
|
||||||
|
It expands to "override".
|
||||||
|
|
||||||
|
The macro goes at the end of the function, usually after the
|
||||||
|
\c{const}, if any:
|
||||||
|
\snippet code/src_corelib_global_qglobal.cpp qdecloverride
|
||||||
|
|
||||||
|
\sa Q_DECL_FINAL
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro Q_DECL_FINAL
|
||||||
|
\since 5.0
|
||||||
|
\deprecated
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
This macro can be used to declare an overriding virtual or a class
|
||||||
|
as "final", with Java semantics. Further-derived classes can then
|
||||||
|
no longer override this virtual function, or inherit from this
|
||||||
|
class, respectively.
|
||||||
|
|
||||||
|
It expands to "final".
|
||||||
|
|
||||||
|
The macro goes at the end of the function, usually after the
|
||||||
|
\c{const}, if any:
|
||||||
|
\snippet code/src_corelib_global_qglobal.cpp qdeclfinal-1
|
||||||
|
|
||||||
|
For classes, it goes in front of the \c{:} in the class
|
||||||
|
definition, if any:
|
||||||
|
\snippet code/src_corelib_global_qglobal.cpp qdeclfinal-2
|
||||||
|
|
||||||
|
\sa Q_DECL_OVERRIDE
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\macro const char* Q_FUNC_INFO()
|
||||||
|
\relates <QtCompilerDetection>
|
||||||
|
|
||||||
|
Expands to a string that describe the function the macro resides in. How this string looks
|
||||||
|
more specifically is compiler dependent. With GNU GCC it is typically the function signature,
|
||||||
|
while with other compilers it might be the line and column number.
|
||||||
|
|
||||||
|
Q_FUNC_INFO can be conveniently used with qDebug(). For example, this function:
|
||||||
|
|
||||||
|
\snippet code/src_corelib_global_qglobal.cpp 22
|
||||||
|
|
||||||
|
when instantiated with the integer type, will with the GCC compiler produce:
|
||||||
|
|
||||||
|
\tt{const TInputType& myMin(const TInputType&, const TInputType&) [with TInputType = int] was called with value1: 3 value2: 4}
|
||||||
|
|
||||||
|
If this macro is used outside a function, the behavior is undefined.
|
||||||
|
*/
|
@ -177,156 +177,6 @@ using namespace Qt::StringLiterals;
|
|||||||
System detection routines
|
System detection routines
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_SYM
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using Digital Mars C/C++
|
|
||||||
(used to be Symantec C++).
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_MSVC
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using Microsoft Visual
|
|
||||||
C/C++, Intel C++ for Windows.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_CLANG
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using Clang.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_BOR
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using Borland/Turbo C++.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_WAT
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using Watcom C++.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_GNU
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using GNU C++.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_COMEAU
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using Comeau C++.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_EDG
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using Edison Design Group
|
|
||||||
C++.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_OC
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using CenterLine C++.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_SUN
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using Forte Developer, or
|
|
||||||
Sun Studio C++.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_MIPS
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using MIPSpro C++.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_DEC
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using DEC C++.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_HPACC
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using HP aC++.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_USLC
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using SCO OUDK and UDK.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_CDS
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using Reliant C++.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_KAI
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using KAI C++.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_INTEL
|
|
||||||
\relates <QtGlobal>
|
|
||||||
\obsolete
|
|
||||||
|
|
||||||
This macro used to be defined if the application was compiled with the old
|
|
||||||
Intel C++ compiler for Linux, macOS or Windows. The new oneAPI C++ compiler
|
|
||||||
is just a build of Clang and therefore does not define this macro.
|
|
||||||
|
|
||||||
\sa Q_CC_CLANG
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_HIGHC
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using MetaWare High C/C++.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_PGI
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using Portland Group C++.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CC_GHS
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Defined if the application is compiled using Green Hills
|
|
||||||
Optimizing C++ Compilers.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\macro Q_PROCESSOR_ALPHA
|
\macro Q_PROCESSOR_ALPHA
|
||||||
\relates <QtGlobal>
|
\relates <QtGlobal>
|
||||||
@ -643,39 +493,6 @@ using namespace Qt::StringLiterals;
|
|||||||
\sa QSysInfo::buildCpuArchitecture()
|
\sa QSysInfo::buildCpuArchitecture()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro void Q_FALLTHROUGH()
|
|
||||||
\relates <QtGlobal>
|
|
||||||
\since 5.8
|
|
||||||
|
|
||||||
Can be used in switch statements at the end of case block to tell the compiler
|
|
||||||
and other developers that that the lack of a break statement is intentional.
|
|
||||||
|
|
||||||
This is useful since a missing break statement is often a bug, and some
|
|
||||||
compilers can be configured to emit warnings when one is not found.
|
|
||||||
|
|
||||||
\sa Q_UNREACHABLE()
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro const char* Q_FUNC_INFO()
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
Expands to a string that describe the function the macro resides in. How this string looks
|
|
||||||
more specifically is compiler dependent. With GNU GCC it is typically the function signature,
|
|
||||||
while with other compilers it might be the line and column number.
|
|
||||||
|
|
||||||
Q_FUNC_INFO can be conveniently used with qDebug(). For example, this function:
|
|
||||||
|
|
||||||
\snippet code/src_corelib_global_qglobal.cpp 22
|
|
||||||
|
|
||||||
when instantiated with the integer type, will with the GCC compiler produce:
|
|
||||||
|
|
||||||
\tt{const TInputType& myMin(const TInputType&, const TInputType&) [with TInputType = int] was called with value1: 3 value2: 4}
|
|
||||||
|
|
||||||
If this macro is used outside a function, the behavior is undefined.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Dijkstra's bisection algorithm to find the square root of an integer.
|
Dijkstra's bisection algorithm to find the square root of an integer.
|
||||||
Deliberately not exported as part of the Qt API, but used in both
|
Deliberately not exported as part of the Qt API, but used in both
|
||||||
@ -833,67 +650,6 @@ void qAbort()
|
|||||||
that qExchange() returns a non-const object, so Qt containers may detach.
|
that qExchange() returns a non-const object, so Qt containers may detach.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_LIKELY(expr)
|
|
||||||
\relates <QtGlobal>
|
|
||||||
\since 4.8
|
|
||||||
|
|
||||||
\brief Hints to the compiler that the enclosed condition, \a expr, is
|
|
||||||
likely to evaluate to \c true.
|
|
||||||
|
|
||||||
Use of this macro can help the compiler to optimize the code.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
\snippet code/src_corelib_global_qglobal.cpp qlikely
|
|
||||||
|
|
||||||
\sa Q_UNLIKELY(), Q_ASSUME()
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_UNLIKELY(expr)
|
|
||||||
\relates <QtGlobal>
|
|
||||||
\since 4.8
|
|
||||||
|
|
||||||
\brief Hints to the compiler that the enclosed condition, \a expr, is
|
|
||||||
likely to evaluate to \c false.
|
|
||||||
|
|
||||||
Use of this macro can help the compiler to optimize the code.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
\snippet code/src_corelib_global_qglobal.cpp qunlikely
|
|
||||||
|
|
||||||
\sa Q_LIKELY()
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_CONSTINIT
|
|
||||||
\relates <QtGlobal>
|
|
||||||
\since 6.4
|
|
||||||
|
|
||||||
\brief Enforces constant initialization when supported by the compiler.
|
|
||||||
|
|
||||||
If the compiler supports the C++20 \c{constinit} keyword, Clang's
|
|
||||||
\c{[[clang::require_constant_initialization]]} or GCC's \c{__constinit},
|
|
||||||
then this macro expands to the first one of these that is available,
|
|
||||||
otherwise it expands to nothing.
|
|
||||||
|
|
||||||
Variables marked as \c{constinit} cause a compile-error if their
|
|
||||||
initialization would have to be performed at runtime.
|
|
||||||
|
|
||||||
For constants, you can use \c{constexpr} since C++11, but \c{constexpr}
|
|
||||||
makes variables \c{const}, too, whereas \c{constinit} ensures constant
|
|
||||||
initialization, but doesn't make the variable \c{const}:
|
|
||||||
|
|
||||||
\table
|
|
||||||
\header \li Keyword \li Added \li immutable \li constant-initialized
|
|
||||||
\row \li \c{const} \li C++98 \li yes \li not required
|
|
||||||
\row \li \c{constexpr} \li C++11 \li yes \li required
|
|
||||||
\row \li \c{constinit} \li C++20 \li no \li required
|
|
||||||
\endtable
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\macro QT_POINTER_SIZE
|
\macro QT_POINTER_SIZE
|
||||||
\relates <QtGlobal>
|
\relates <QtGlobal>
|
||||||
@ -1140,48 +896,6 @@ bool QInternal::activateCallbacks(Callback cb, void **parameters)
|
|||||||
\sa QT_NAMESPACE
|
\sa QT_NAMESPACE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_DECL_EXPORT
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
This macro marks a symbol for shared library export (see
|
|
||||||
\l{sharedlibrary.html}{Creating Shared Libraries}).
|
|
||||||
|
|
||||||
\sa Q_DECL_IMPORT
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_DECL_IMPORT
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
This macro declares a symbol to be an import from a shared library (see
|
|
||||||
\l{sharedlibrary.html}{Creating Shared Libraries}).
|
|
||||||
|
|
||||||
\sa Q_DECL_EXPORT
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_DECL_CONSTEXPR
|
|
||||||
\relates <QtGlobal>
|
|
||||||
\deprecated [6.4] Use the \c constexpr keyword instead.
|
|
||||||
|
|
||||||
This macro can be used to declare variable that should be constructed at compile-time,
|
|
||||||
or an inline function that can be computed at compile-time.
|
|
||||||
|
|
||||||
\sa Q_DECL_RELAXED_CONSTEXPR
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_DECL_RELAXED_CONSTEXPR
|
|
||||||
\relates <QtGlobal>
|
|
||||||
\deprecated [6.4] Use the \c constexpr keyword instead.
|
|
||||||
|
|
||||||
This macro can be used to declare an inline function that can be computed
|
|
||||||
at compile-time according to the relaxed rules from C++14.
|
|
||||||
|
|
||||||
\sa Q_DECL_CONSTEXPR
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\macro qMove(x)
|
\macro qMove(x)
|
||||||
\relates <QtGlobal>
|
\relates <QtGlobal>
|
||||||
@ -1194,19 +908,6 @@ bool QInternal::activateCallbacks(Callback cb, void **parameters)
|
|||||||
qMove takes an rvalue reference to its parameter \a x, and converts it to an xvalue.
|
qMove takes an rvalue reference to its parameter \a x, and converts it to an xvalue.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_DECL_NOTHROW
|
|
||||||
\relates <QtGlobal>
|
|
||||||
\since 5.0
|
|
||||||
\deprecated [6.4] Use the \c noexcept keyword instead.
|
|
||||||
|
|
||||||
This macro marks a function as never throwing, under no
|
|
||||||
circumstances. If the function does nevertheless throw, the
|
|
||||||
behaviour is undefined.
|
|
||||||
|
|
||||||
\sa Q_DECL_NOEXCEPT, Q_DECL_NOEXCEPT_EXPR()
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\macro QT_TERMINATE_ON_EXCEPTION(expr)
|
\macro QT_TERMINATE_ON_EXCEPTION(expr)
|
||||||
\relates <QtGlobal>
|
\relates <QtGlobal>
|
||||||
@ -1237,78 +938,6 @@ bool QInternal::activateCallbacks(Callback cb, void **parameters)
|
|||||||
\sa Q_DECL_NOEXCEPT, Q_DECL_NOTHROW, qTerminate()
|
\sa Q_DECL_NOEXCEPT, Q_DECL_NOTHROW, qTerminate()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_DECL_NOEXCEPT
|
|
||||||
\relates <QtGlobal>
|
|
||||||
\since 5.0
|
|
||||||
\deprecated [6.4] Use the \c noexcept keyword instead.
|
|
||||||
|
|
||||||
This macro marks a function as never throwing. If the function
|
|
||||||
does nevertheless throw, the behaviour is defined:
|
|
||||||
std::terminate() is called.
|
|
||||||
|
|
||||||
|
|
||||||
\sa Q_DECL_NOTHROW, Q_DECL_NOEXCEPT_EXPR()
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_DECL_NOEXCEPT_EXPR(x)
|
|
||||||
\relates <QtGlobal>
|
|
||||||
\since 5.0
|
|
||||||
\deprecated [6.4] Use the \c noexcept keyword instead.
|
|
||||||
|
|
||||||
This macro marks a function as non-throwing if \a x is \c true. If
|
|
||||||
the function does nevertheless throw, the behaviour is defined:
|
|
||||||
std::terminate() is called.
|
|
||||||
|
|
||||||
|
|
||||||
\sa Q_DECL_NOTHROW, Q_DECL_NOEXCEPT
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_DECL_OVERRIDE
|
|
||||||
\since 5.0
|
|
||||||
\deprecated
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
This macro can be used to declare an overriding virtual
|
|
||||||
function. Use of this markup will allow the compiler to generate
|
|
||||||
an error if the overriding virtual function does not in fact
|
|
||||||
override anything.
|
|
||||||
|
|
||||||
It expands to "override".
|
|
||||||
|
|
||||||
The macro goes at the end of the function, usually after the
|
|
||||||
\c{const}, if any:
|
|
||||||
\snippet code/src_corelib_global_qglobal.cpp qdecloverride
|
|
||||||
|
|
||||||
\sa Q_DECL_FINAL
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\macro Q_DECL_FINAL
|
|
||||||
\since 5.0
|
|
||||||
\deprecated
|
|
||||||
\relates <QtGlobal>
|
|
||||||
|
|
||||||
This macro can be used to declare an overriding virtual or a class
|
|
||||||
as "final", with Java semantics. Further-derived classes can then
|
|
||||||
no longer override this virtual function, or inherit from this
|
|
||||||
class, respectively.
|
|
||||||
|
|
||||||
It expands to "final".
|
|
||||||
|
|
||||||
The macro goes at the end of the function, usually after the
|
|
||||||
\c{const}, if any:
|
|
||||||
\snippet code/src_corelib_global_qglobal.cpp qdeclfinal-1
|
|
||||||
|
|
||||||
For classes, it goes in front of the \c{:} in the class
|
|
||||||
definition, if any:
|
|
||||||
\snippet code/src_corelib_global_qglobal.cpp qdeclfinal-2
|
|
||||||
|
|
||||||
\sa Q_DECL_OVERRIDE
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace QtPrivate {
|
namespace QtPrivate {
|
||||||
Q_LOGGING_CATEGORY(lcNativeInterface, "qt.nativeinterface")
|
Q_LOGGING_CATEGORY(lcNativeInterface, "qt.nativeinterface")
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user