4
回答
linux头文件的—_throw__宏
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
我看linux一些头文件函数声明后面总有__throw__这样的宏,这个宏展开后是什么?或者说有什么用?我们找到它的声明在哪?还望大家指教。
举报
ArcJson
发帖于6年前 4回/1K+阅
共有4个答案 最后回答: 6年前

和gcc 有关,如果你说的是 __attribute__ __nothrow__ 涉及的资料在

http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#Function-Attributes

摘抄如下

nothrow

The nothrow attribute is used to inform the compiler that a function cannot throw an exception. For example, most functions in the standard C library can be guaranteed not to throw an exception with the notable exceptions of qsort and bsearch that take function pointer arguments. The nothrow attribute is not implemented in GCC versions earlier than 3.3.

在非GCC,非C++语言下,这个东西,就是定义为空的东西。是给编译器看的。上面就是GCC遇到C代码中,该问题的处理方法。
--- 共有 4 条评论 ---
中山野鬼回复 @汉克斯 : ”YE!!!“哈,起得早,不如赶得巧。 6年前 回复
汉克斯我X,我回了一句就去开会了,被野鸡抢了先机。 6年前 回复
中山野鬼回复 @千羽鸣 : 我也当学习,很多资料看了,没碰过,看了等于没看,不带问题看东西,有什么用? 6年前 回复
吃土的汉子野鬼大哥回答每个问题不但敬业码字,居然连翻译都做了出来……佩服到五体投地~ 6年前 回复

我找到啦

</usr/include/argp.h>
#ifndef __THROW
  #define __THROW
#endif

#ifndef __THROW
  #ifndef __GNUC_PREREQ
     #define __GNUC_PREREQ(maj,min) (0)
  #endif
#if defined __cplusplus && __GNUC_PREREQ(2,8)
  #define __THROW     throw()
#else 
  #define __THROW
#endif
#endif

在c和c++中实现不一样的效果,谢谢野鬼了。

顶部