为什么我们使用_PROTOTYPE例如_PROTOTYPE(void*memset,(void*_s,int _c,size_t _n)我在MINIX3源代码中看到它
因为正如标题块所说,他们不知道是否要使用ANSI编译器或K&R,并且这个marco允许他们将参数保存在ANSI构建中,并将它们丢弃在K&R构建中.
00033 /* Keep everything for ANSI prototypes. */
00034 #define _PROTOTYPE(function, params) function params
Run Code Online (Sandbox Code Playgroud)
诗
00045 /* Throw away the parameters for K&R prototypes. */
00046 #define _PROTOTYPE(function, params) function()
Run Code Online (Sandbox Code Playgroud)
意思是
00483 _PROTOTYPE( void _exit, (int _status) );
Run Code Online (Sandbox Code Playgroud)
变成ANSI:
void _exit(int _status);
Run Code Online (Sandbox Code Playgroud)
在K&R下:
void _exit();
Run Code Online (Sandbox Code Playgroud)