<QtCompilerDetection> - Compiler-specific Macro Definitions

<QtCompilerDetection> ヘッダーファイルには、様々なコンパイラ固有のマクロが含まれています。詳細...

Header: #include <QtCompilerDetection>

マクロ

詳しい説明

<QtCompilerDetection> ヘッダファイルは、アプリケーションが指定されたコンパイラでコンパイルされた場合に定義されるマクロ (Q_CC_*) を提供します。例えば、Q_CC_SUN マクロは、アプリケーションが Forte Developer または Sun Studio C++ を使用してコンパイルされた場合に定義されます。

これらのマクロの目的は、プログラマがアプリケーションにコンパイラ固有のコードを追加できるようにすることです。

マクロ・ドキュメント

[since 6.7] Q_NODISCARD_CTOR_X(message)

[since 6.7] Q_NODISCARD_X(message)

この機能をサポートしているコンパイラーでは[[nodiscard(message)]] に展開される。

そうでない場合は、それぞれ[[nodiscard]]Q_NODISCARD_CTOR に展開されます。

この関数は Qt 6.7 で導入されました。

Q_NODISCARD_CTORも参照してください

Q_CC_BOR

アプリケーションが Borland/Turbo C++ でコンパイルされている場合に定義されます。

Q_CC_CDS

アプリケーションがReliant C++でコンパイルされている場合に定義されます。

Q_CC_CLANG

アプリケーションがClangを使ってコンパイルされている場合に定義される。

Q_CC_COMEAU

アプリケーションが Comeau C++ でコンパイルされている場合に定義されます。

Q_CC_DEC

アプリケーションが DEC C++ でコンパイルされている場合に定義される。

Q_CC_EDG

アプリケーションがEdison Design Group C++でコンパイルされている場合に定義されます。

Q_CC_GHS

アプリケーションが Green Hills Optimizing C++ Compilers を使用してコンパイルされている場合に定義されます。

Q_CC_GNU

アプリケーションがGNU Compiler Collection (GCC)を使ってコンパイルされている場合に定義されます。

Q_CC_HIGHC

アプリケーションがMetaWare High C/C++を使用してコンパイルされている場合に定義されます。

Q_CC_HPACC

アプリケーションが HP aC++ を使用してコンパイルされている場合に定義されます。

Q_CC_KAI

アプリケーションがKAI C++でコンパイルされている場合に定義されます。

Q_CC_MIPS

アプリケーションが MIPSpro C++ を使用してコンパイルされている場合に定義されます。

Q_CC_MSVC

アプリケーションが Microsoft Visual C/C++、Intel C++ for Windows でコンパイルされている場合に定義されます。

Q_CC_OC

アプリケーションが CenterLine C++ を使用してコンパイルされている場合に定義されます。

Q_CC_PGI

アプリケーションが Portland Group C++ を使用してコンパイルされている場合に定義されます。

Q_CC_SUN

アプリケーションが Forte Developer または Sun Studio C++ を使用してコンパイルされている場合に定義されます。

Q_CC_SYM

アプリケーションがデジタルマーズC/C++(以前はシマンテックC++)でコンパイルされている場合に定義されます。

Q_CC_USLC

アプリケーションが SCO OUDK および UDK を使用してコンパイルされている場合に定義されます。

Q_CC_WAT

アプリケーションが Watcom C++ でコンパイルされている場合に定義される。

[since 6.4] Q_CONSTINIT

コンパイラがサポートしている場合、定数の初期化を強制します。

コンパイラが C++20constinit キーワード、Clang の[[clang::require_constant_initialization]] キーワード、または GCC の__constinit キーワードをサポートしている場合、このマクロは使用可能なこれらの最初の 1 つに展開されます。

constinit とマークされた変数は、実行時に初期化する必要がある場合、コンパイルエラーになります。

注意: 定数で初期化された変数が自明でない破壊を持つ場合、ロード時に影響を与える可能性があります。

定数については、C++11 以降constexpr を使用できますが、constexpr では変数もconst になります。一方、constinit では定数の初期化は保証されますが、変数はconst にはなりません:

キーワード追加された不変定数初期化
constC++98はい必須ではない
constexprC++11必要必須
constinitC++20不要必須

このマクロは Qt 6.4 で導入されました。

Q_DECL_EXPORT

このマクロは、共有ライブラリエクスポート用のシンボルをマークする(共有ライブラリの作成参照)。

Q_DECL_IMPORTも参照してください

Q_DECL_IMPORT

このマクロは、シンボルを共有ライブラリからインポートすることを宣言します(共有 ライブラリの作成参照)。

Q_DECL_EXPORTも参照してください

void Q_FALLTHROUGH

switch文のcaseブロックの最後で使用することで、break文がないことが意図的であることをコンパイラや他の開発者に伝えることができる。

break文がないのはバグであることが多く、break文がないときに警告を出すように設定できるコンパイラもあるので、これは便利です。

Q_UNREACHABLE() およびQ_UNREACHABLE_RETURN()も参照のこと

const char*Q_FUNC_INFO

マクロが存在する関数を表す文字列に展開される。この文字列が具体的にどのように見えるかはコンパイラに依存する。GNU GCCでは一般的に関数のシグネチャですが、他のコンパイラでは行番号と列番号かもしれません。

Q_FUNC_INFOはqDebug ()と一緒に使うと便利です。例えば、この関数:

template<typenameTInputType>constTInputType&myMin(constTInputType&value1, constTInputType&value2).{
    qDebug() << Q_FUNC_INFO << "was called with value1:" << value1 << "value2:" << value2;

   if(value1<value2)returnvalue1;else returnvalue2; }

integer型でインスタンス化された場合、GCCコンパイラでは次のようになる:

const TInputType& myMin(const TInputType&, const TInputType&) [with TInputType = int] was called with value1: 3 value2: 4

このマクロを関数の外で使用すると、動作は未定義になる。

Q_LIKELY(expr)

囲んだ条件exprtrue と評価される可能性が高いことをコンパイラに示す。

このマクロを使用すると、コンパイラがコードを最適化するのに役立ちます。

    // the condition inside the "if" will be successful most of the times
    for (int i = 1; i <= 365; i++) {
        if (Q_LIKELY(isWorkingDay(i))) {
            ...
        }
        ...
    }

Q_UNLIKELY()も参照

[since 6.6] Q_NODISCARD_CTOR

コンストラクタでこれを受け付けるコンパイラでは、[[nodiscard]] に展開される。

そうでない場合は何も展開されません。

Q_NODISCARD_CTOR としてマークされたコンストラクタは、呼び出し先が結果のオブジェクトを使用しない場合にコンパイラの警告を引き起こします。

このマクロは、この機能を実装していないコンパイラでの警告を防ぐためだけに存在します。サポートしているプラットフォームがすべてコンストラクタで[[nodiscard]] を許可している場合は、このマクロの代わりに C++ 属性を直接使用することを強くお勧めします。

このマクロは Qt 6.6 で導入されました。

Q_NODISCARD_CTOR_Xも参照して ください。

Q_UNLIKELY(expr)

囲んだ条件exprfalse と評価される可能性が高いことをコンパイラに示す。

このマクロを使用すると、コンパイラがコードを最適化するのに役立ちます。

boolreadConfiguration(constQFile&file) {// 既存のファイルを読み込むように要求されることを期待する if(Q_UNLIKELY(!file.exists())){        qWarning() << "File not found";
       return false; } ... return true; }

Q_LIKELY()も参照のこと

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.