Я в настоящее время строю GDCM
использование проекта MacOSX
компилятор по умолчанию: clang
, Этот компилятор вызывает предупреждение в своем собственном заголовке (см. ссылка):
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.
Это либо явная ошибка в заголовке llvm (в которую мне трудно поверить), либо я что-то упускаю из-за использования setjmp
в C++98
,
Это ни то, ни другое. Это не ошибка в заголовке LLVM, не то, что вы что-то упускаете из-за использования setjmp
это то, что вы включили предупреждение, которое также срабатывает на совершенно правильный код. Большинство предупреждений делают. Вот почему это скорее предупреждения, чем ошибки. Это конкретное предупреждение чаще всего срабатывает на допустимом коде. Вот почему он не включен по умолчанию, даже не включен в -Wall
и даже не включены в -Wextra
, Тем не менее вы включили его в любом случае. Это хорошо, но тогда вы должны быть готовы разобраться с результатами.
Других решений пока нет …