读书人

关于函数声明的有关问题

发布时间: 2012-04-25 19:32:32 作者: rapoo

关于函数声明的问题
在看一些头文件的函数声明时,总发现有的函数声明结尾加一个宏,
比如emacs源文件的lisp.h头文件中有这么一个函数声明:

C/C++ code
extern void die P_((const char *, const char *, int)) NO_RETURN;

想不通NO_RETURN有什么用,也没找到它的宏定义。

还有,在gcc的stdio.h的头文件中,也有类似的在函数声明结尾加上"_NOTHROW"这个宏,同样不明白。

请高手指点一下,非常感谢。

[解决办法]
_NOTHROW一般定义成 throw ()
表示这个函数保证不抛出异常

另外楼主可以看看specstring.h这个头文件,里面有很多关于修饰参数,返回值的信息
[解决办法]
extern void die P_((const char *, const char *, int)) NO_RETURN;
GCC 下 NO_RETURN 应该是
__attribute__((noreturn))

指示编译器,这个函数不会返回,便于编译器优化代码。

读书人网 >C语言

热点推荐