为什么_PROTOTYPE使用头文件

moh*_*hit 1 c

为什么我们使用_PROTOTYPE例如_PROTOTYPE(void*memset,(void*_s,int _c,size_t _n)我在MINIX3源代码中看到它

Sim*_*rim 5

因为正如标题块所说,他们不知道是否要使用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)