其他分享
首页 > 其他分享> > c – noexcept关键字和_NOEXCEPT宏之间有什么区别?

c – noexcept关键字和_NOEXCEPT宏之间有什么区别?

作者:互联网

我是C的初学者,我正在学习一些C 11特性.我注意到的一件事是,在Visual C stdlib的某些部分中,作者使用了_NOEXCEPT宏而不是noexcept关键字.悬停在宏上面说#define _NOEXCEPT noexcept,所以我有点困惑它是什么意思.这两者之间有什么区别,我应该更喜欢一个吗?

编辑:我刚刚在GitHub上搜索它,它看起来像clang也使用它,所以它不是一个Visual C特定的宏.

解决方法:

_NOEXCEPT不是标准宏.这由领先的下划线表示,这表明这属于实施.

很可能这个宏被定义为throw(),直到Visual C编译器获得对C 11中引入的noexcept关键字的支持.

即,它最初是作为编写与多个版本的编译器兼容的代码的手段而提供的.类似地,可以定义像CPPX_NORETURN这样的宏,以使用特定于编译器的方法来指示无返回函数,其中不支持C属性[[noreturn]].等等.

标签:noexcept,c,c11,macros
来源: https://codeday.me/bug/20190824/1707291.html