关于函数声明的有关问题
关于函数声明的问题在看一些头文件的函数声明时,总发现有的函数声明结尾加一个宏,比如emacs源文件的lisp.h
关于函数声明的问题
在看一些头文件的函数声明时,总发现有的函数声明结尾加一个宏,
比如emacs源文件的lisp.h头文件中有这么一个函数声明:
C/C++ codeextern 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))
指示编译器,这个函数不会返回,便于编译器优化代码。