分类: LINUX
2011-01-12 20:42:54
extern void _sig_ign __P ((int sig));
C库里面很多函数如此声明主要原因是ANSI C之前的旧编译器不支持函数原型定义,使用“__P”宏为ANSI和非ANSI的编译器提供一种可移植的方案。其定义通常如下:
# if defined(__STDC__) || defined(__GNUC__)
# define __P(x) x
# else
# define __P(x) ()
# endif
这样ANSIC的编译器会把这句编译为extern void _sig_ign(int sig);
非ANSI C的编译器会把它编译为 extern void _sig_ign();
均不会报错,这样使得在不同编译器下都可以使用,增加了代码的可移植性。