当前位置:  开发笔记 > 编程语言 > 正文

警告:禁用递归宏的扩展

如何解决《警告:禁用递归宏的扩展》经验,为你挑选了1个好方法。

我目前正在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标题中的一个明显错误(我很难相信),或者我错过了关于使用setjmpin的一些内容C++98.



1> 小智..:

它既不是.这不是LLVM标头中的错误,并不是因为您错过了使用的错误setjmp,而是您启用了警告,该错误也会触发完全有效的代码.大多数警告都有.这就是为什么他们是警告而不是错误.此特定警告主要触发有效代码.这就是为什么默认情况下不启用它,甚至不包括在内-Wall,甚至不包含在内-Wextra.然而你无论如何都启用了它.那很好,但是你应该准备好处理结果.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有