能否解释在utsname.h (utsname定义)中找到的以下表达式的语法:
extern int uname (struct utsname *__name) __THROW;__THROW是一个宏,它从cdefs.h中给出throw()。为什么可以这样把它放在外接函数的定义中呢?
发布于 2013-09-19 13:35:29
将函数声明为抛出意味着在使用此函数时不会引发异常。
从http://www.cplusplus.com/doc/tutorial/exceptions/复制
异常规格
在声明函数时,我们可以通过在函数声明中添加抛出后缀来限制它可能直接或间接抛出的异常类型:
float myfunction (char param) throw (int);这声明了一个名为myfunction的函数,它接受char类型的一个参数,并返回一个类型为float的元素。此函数可能抛出的唯一异常是int类型的例外。如果它直接或间接抛出具有不同类型的异常,则常规int类型处理程序无法捕获它。
如果这个抛出说明符是空的,没有任何类型,这意味着函数不允许抛出异常。不带抛出说明符的函数(常规函数)允许抛出任何类型的异常:
int myfunction (int param) throw(); // no exceptions allowed
int myfunction (int param); // all exceptions allowed https://stackoverflow.com/questions/18896064
复制相似问题