Chinaunix首页 | 论坛 | 博客
  • 博客访问: 43831
  • 博文数量: 21
  • 博客积分: 1425
  • 博客等级: 上尉
  • 技术积分: 215
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-29 21:56
文章分类

全部博文(21)

文章存档

2009年(19)

2008年(2)

我的朋友

分类: C/C++

2009-09-09 11:23:05

time函数在libc中,而libc是gcc默认链接的库之一,所以即使不include相应的文件,链接也是能够通过的
至于编译,由于你没有include头文件,gcc在碰到time的时候,会根据这个函数的调用参数自动推断出一个返回int的函数原型,这个叫做"implicit declaration " 使用参数-Wall就能看到了:
warning: implicit declaration of function ‘time’
 
由于缺少function prototype,所以你的参数可以乱写,下面的代码完全能通过编译和链接,但是运行的时候就是segfault,虽然正确的参数只有一个,是 time_t *类型的,现在传进去3个,程序照样能编译链接通过,运行时出错是因为现在程序把常量100当成一个指针,所以访问的地方越界(这样低的地址,很可能是操作系统的保留区)。
CODE:
#include
int
main(void){
    int a =time(100,"200","fuck");
    printf("%d\n",a);
    return 0;
}
阅读(970) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~