2

プロジェクト(基本的にはMac OS 10.6のQtフレームワークによって生成されたスタブ)をビルドして実行すると、次のエラー出力が表示されます。

/Users/home/Qt5.0.1/5.0.1/clang_64/include/QtCore/qisenum.h:53: Error:token is not a valid binary operator in a preprocessor subexpression
#    if __has_extension(is_enum)
    ~~~~~~~~~~~~~~~^

他のMacユーザーも同じ問題を抱えているようですが、これに対する解決策は見つかりません。誰もがこれを解決する方法を知っていますか?

4

4 に答える 4

1

この問題は、このフォーラム投稿で解決されています。

これは基本的にあなたのバージョンのclangの問題です

于 2013-02-27T16:37:44.103 に答える
1

私は解決策を見つけました。ここから最新のqisenum.hファイルをコピーし、クリエーターインストールのclang_64/include/QtCoreフォルダーに置き換えるだけで、正常に機能します。Qt

于 2013-02-28T14:24:59.860 に答える
1
#    if __has_extension(is_enum)
         ~~~~~~~~~~~~~~~^

これは、機能チェックマクロと呼ばれるClang言語の拡張機能です。彼らはClangにとって長い間存在してきました。GCCは、GCC 5.0、IIRCから提供しました。

__has_extensionプリプロセッサマクロとしてテストできます。したがって、最初にマクロの存在をテストしてから、機能をテストします。

#if defined(__has_extension)
# if __has_extension(is_enum)
   ...
# endif
#endif

__has_extension(is_enum)別の行にある必要があります。

インクルードファイルでも機能します。Crypto ++プロジェクトからrdrand.cppファイル

# include <immintrin.h> // rdrand, MSC, ICC, and GCC
# if defined(__has_include)
#  if __has_include(<x86intrin.h>)
#   include <x86intrin.h> // rdseed for some compilers, like GCC
#  endif
# endif
于 2015-11-26T01:14:13.100 に答える
1

私の場合、同じエラーの理由は、ターゲットビルド設定のプリプロセッサマクロ名にハイフン記号「-」が含まれていることでした。これは、TEST-DEBUG=1のようなものです。

ハイフン('-')を含むXcodeビルド構成名は、ポッドビルドの失敗を引き起こします

于 2016-03-22T16:40:29.163 に答える