time()函数怎么不好用啊?
我遇到了一个奇怪的问题,请广大朋友给予帮助。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
long r = time();
return 0;
}
这个程序没有任何问题,编译成功,可是我只是添加了一些头文件,如下:
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/param.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netinet/ip.h>
#include <string.h>
#include <netdb.h>
#include <netinet/tcp.h>
#include <netinet/udp.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <net/if.h>
#include <net/if_arp.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/if_ether.h>
#include <linux/net.h>
#include <net/ethernet.h>
#include <errno.h>
#include <netpacket/packet.h>
#include <asm/types.h>
#include <endian.h>
#include <byteswap.h>
#include <pthread.h>
#include <sys/un.h>
int main(int argc, char **argv)
{
long r = time();
return 0;
}
此时再次编译便出现错误(下面错误信息中的“time1.c”是源程序文件的名字):
time1.c: In function `main':
time1.c:34: error: too few arguments to function `time'
这令我十分疑惑,到底是为什么呢?难道是其他头文件中有类似的函数,或者其他的原因?上面那些头文件是我正在做的一个工程所要用到的头文件,所以我不想将它们中的某一个删除,但是我还想利用time()函数的功能,请问我该怎么办啊?
问题点数:40、回复次数:10Top
1 楼myhaisky(飞翔)回复于 2006-03-07 20:26:15 得分 0
补充一点:
我用的是fedora core 3操作系统Top
2 楼phus(phus)回复于 2006-03-07 21:05:57 得分 10
time(NULL);Top
3 楼helios1688(瓶子)回复于 2006-03-07 22:39:24 得分 6
用到 time()应该要 time.h头文件吧
我在time.h文件中看了下
typedef long time_t;
time_t _Cdecl time (time_t *timer);
time 函数是有参数的Top
4 楼fierygnu(va_list)回复于 2006-03-07 22:39:45 得分 5
man 2 time看time函数原型就明白了。Top
5 楼hundlom(托克维尔)回复于 2006-03-07 23:28:40 得分 0
你加入头文件后,程序在编译的时候找头文件的顺序改变了,试试仔细比对头文件的不同。Top
6 楼fierygnu(va_list)回复于 2006-03-07 23:31:59 得分 10
跟头文件顺序没有关系。没加头文件时,没有time的原型,怎么调用都可以,C编译器不报错。有了原型声明就不行了,因为C不支持函数覆盖,所以报错了。Top
7 楼myhaisky(飞翔)回复于 2006-03-10 12:34:01 得分 0
但是,各位高手,看过time的相关说明后,发现它只能精确到“秒(second)”,请问,能否获得精确到“毫秒”的时间呢?Top
8 楼fierygnu(va_list)回复于 2006-03-10 12:38:25 得分 2
man gettimeofdayTop
9 楼tonyMCM(南京~上海)回复于 2006-03-10 13:40:39 得分 6
跟头文件顺序没有关系。没加头文件时,没有time的原型,怎么调用都可以,C编译器不报错。有了原型声明就不行了,因为C不支持函数覆盖,所以报错了。
这位老师讲解的很详细了
就是这个原因
一开始不报错 不代表 你没有错
还是踏实点 看man time
或者找本linux下 c函数大全,就可以节约你很多上网问问题的时间了
struct timeval nowit;
gettimeofday(&nowit,NULL);
Top
10 楼lanying(蓝鹰)(问个不休)回复于 2006-03-10 19:31:18 得分 1
ansi c有函数原型的概念Top




