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;
}
阅读(1056) | 评论(0) | 转发(0) |