最近在学习BSD的TCP/IP模块实现代码(TCP/IP详解 卷2:实现),遇到__P这个宏,Google得知作用如下。
因为ANSI C的老编译器不支持函数函数原型定义,所以使用__P系统宏解决代码的移植性问题。这样,编写的C代码能够在ANSI的编译器和非ANSI的编译器上都可以编译通过。
__P宏的实现如下代码所示。
# if defined(__STDC__) || defined(__GNUC__)
# define __P(x) x
# else
# define __P(x) ()
# endif
从宏的实现可以看出,__P可以视为不存在,不影响代码阅读。
(完)