首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带with ()的extern声明

带with ()的extern声明
EN

Stack Overflow用户
提问于 2013-09-19 13:31:47
回答 1查看 334关注 0票数 0

能否解释在utsname.h (utsname定义)中找到的以下表达式的语法:

代码语言:javascript
复制
extern int uname (struct utsname *__name) __THROW;

__THROW是一个宏,它从cdefs.h中给出throw()。为什么可以这样把它放在外接函数的定义中呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-19 13:35:29

将函数声明为抛出意味着在使用此函数时不会引发异常。

http://www.cplusplus.com/doc/tutorial/exceptions/复制

异常规格

在声明函数时,我们可以通过在函数声明中添加抛出后缀来限制它可能直接或间接抛出的异常类型:

代码语言:javascript
复制
float myfunction (char param) throw (int);

这声明了一个名为myfunction的函数,它接受char类型的一个参数,并返回一个类型为float的元素。此函数可能抛出的唯一异常是int类型的例外。如果它直接或间接抛出具有不同类型的异常,则常规int类型处理程序无法捕获它。

如果这个抛出说明符是空的,没有任何类型,这意味着函数不允许抛出异常。不带抛出说明符的函数(常规函数)允许抛出任何类型的异常:

代码语言:javascript
复制
int myfunction (int param) throw(); // no exceptions allowed
int myfunction (int param);         // all exceptions allowed 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18896064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档