4

現在、デフォルトのコンパイラGDCMを使用してプロジェクトをビルドしています: . このコンパイラは、独自のヘッダーで警告をトリガーします ( refを参照)。MacOSXclang

In file included from /Users/builder/external/GDCM/Source/MediaStorageAndFileFormat/gdcmJPEG12Codec.cxx:21:
/Users/builder/external/GDCM/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:336:9: warning: disabled expansion of recursive macro [-Wdisabled-macro-expansion]
    if (setjmp(jerr.setjmp_buffer))
        ^
/Users/builder/llvm/llvm-rel-install/bin/../include/c++/v1/setjmp.h:40:21: note: expanded from macro 'setjmp'
#define setjmp(env) setjmp(env)
                    ^
In file included from /Users/builder/external/GDCM/Source/MediaStorageAndFileFormat/gdcmJPEG12Codec.cxx:21:
/Users/builder/external/GDCM/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:724:9: warning: disabled expansion of recursive macro [-Wdisabled-macro-expansion]
    if (setjmp(jerr.setjmp_buffer))
        ^
/Users/builder/llvm/llvm-rel-install/bin/../include/c++/v1/setjmp.h:40:21: note: expanded from macro 'setjmp'
#define setjmp(env) setjmp(env)
                    ^
2 warnings generated.

setjmpこれは、llvm ヘッダーの明らかなバグ (信じがたいことです) か、 inの使用に関する何かが欠けているかのいずれかですC++98

4

1 に答える 1

9

どちらでもない。これは LLVM ヘッダーのバグではなく、 の使用について何かが欠けているということでもありsetjmpません。完全に有効なコードでもトリガーされる警告を有効にしたということです。ほとんどの警告はそうです。そのため、エラーではなく警告です。この特定の警告は、ほとんどの場合、有効なコードでトリガーされます。そのため、デフォルトでは有効になっておらず、 にも含まれて-Wallおらず、 にも含まれていません-Wextra。それでも、とにかくそれを有効にしました。それは問題ありませんが、結果に対処する準備をする必要があります。

于 2016-01-10T10:54:08.913 に答える