Chinaunix首页 | 论坛 | 博客
  • 博客访问: 135214
  • 博文数量: 75
  • 博客积分: 3483
  • 博客等级: 中校
  • 技术积分: 820
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-07 08:31
文章分类

全部博文(75)

文章存档

2011年(53)

2010年(22)

我的朋友

分类: 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();
均不会报错,这样使得在不同编译器下都可以使用,增加了代码的可移植性。

阅读(720) | 评论(0) | 转发(0) |
0

上一篇:libc_hidden_proto

下一篇:RSF

给主人留下些什么吧!~~