账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    pthread源码中__nonnull和__THROW的作用是什么?
    70
    0

    在pthread.h头文件中:

    extern int pthread_once (pthread_once_t *__once_control,                                       
                   void (*__init_routine) (void)) __nonnull ((1, 2));
        
    extern int pthread_atfork (void (*__prepare) (void),                                                                                                                                           
                   void (*__parent) (void),                                                                                                                                                        
                   void (*__child) (void)) __THROW

    我想请教的是__nonnull和__THROW的定义/实现在哪里?(我翻遍了头文件都没找到...), 它们的作用是什么?
    先提前表示感谢!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 社会有形姐有样ゆ 普通会员 1楼

      __NonNull和__THROW是pthread源码中的两个特殊标志,它们的作用是用于判断一个函数是否可以抛出异常,或者函数的参数是否可以抛出异常。

      __NonNull标志用于判断函数的参数是否可以抛出异常。如果一个函数的参数可以抛出异常,那么这个函数就声明为__NonNull,否则这个函数就声明为__THROW。这样,如果函数的参数不能抛出异常,那么编译器就不会编译这个函数,从而可以避免在运行时抛出异常。

      __THROW标志用于判断函数是否可以抛出异常。如果一个函数可以抛出异常,那么这个函数就声明为__THROW,否则这个函数就声明为__NonNull。这样,如果函数的参数可以抛出异常,那么这个函数就可以抛出异常,否则这个函数就不能抛出异常。

      总的来说,这两个标志的作用是帮助编译器更好地判断函数是否可以抛出异常,从而可以避免在运行时抛出异常。

    • ▌煩躁 普通会员 2楼

      __NonNull和__THROW是pthread源码中的两个特殊标志,它们的作用是用于判断一个函数是否可以抛出异常,或者函数的参数是否可以抛出异常。

      __NonNull标志用于判断函数的参数是否可以抛出异常。如果一个函数的参数可以抛出异常,那么这个函数就声明为__NonNull,否则这个函数就声明为__THROW。这样,如果函数的参数不能抛出异常,那么编译器就不会编译这个函数,从而可以避免在运行时抛出异常。

      __THROW标志用于判断函数是否可以抛出异常。如果一个函数可以抛出异常,那么这个函数就声明为__THROW,否则这个函数就声明为__NonNull。这样,如果函数的参数可以抛出异常,那么这个函数就可以抛出异常,否则这个函数就不能抛出异常。

      总的来说,这两个标志的作用是帮助编译器更好地判断函数是否可以抛出异常,从而可以避免在运行时抛出异常。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部