Linux 64位环境
func(buf)
char buf[];
{
char *pnt;
long tim;
char *ctime(); //这里..没有这行的话(接下面注释)
time(&tim);
pnt = (char *)ctime(&tim);//这一行会报segment error,运行时才会报,编译通过
}
看了下msdn,ctime是这样子的
char *ctime(
const time_t *timer
);
据调查,ctime(&tim)貌似返回了一个32位的int,而pnt是64位的指针,所以报错(也有可能不是)。
这么推测的理由是编译的时候那一行有个warning:cast to pointer from Interger of different size.
加了char *ctime(); 就没有这个warning并一切正常了。
我想问的是:
这个函数内部的char *ctime();是什么用法啊?
为什么这么声明下ctime(&tim)就正常了呢?明显一个带参一个不带参...不懂,求教。