日期:2014-05-16  浏览次数:20819 次

求错误原因
char *GetSysTime(void)
{
char *timeMsg;
time_t timeval;
(void)time(&timeval);
if((timeMsg=ctime(&timeval))==NULL) //编译时此行警告
return NULL;
else
return timeMsg;
}

警告内容:
warning: assignment makes pointer from integer without a cast

这是《Linux程序设计》里面的代码,我man查看了time/ctime函数的类型,并没发现问题,求指点!!!

------解决方案--------------------
有没有包含头文件?
#include <time.h>
------解决方案--------------------
我用-Wall选项编译运行这个程序:

#include <time.h>
#include <stdio.h>

char *GetSysTime(void)
{
char *timeMsg;
time_t timeval;
(void)time(&timeval);
if((timeMsg = ctime(&timeval)) == NULL)
return NULL;
else
return timeMsg;
}

int main(int argc, char *argv[])
{
printf("%s\n", GetSysTime());
return 0;
}

结果编译运行结果都正常,没有警告;



warning: assignment makes pointer from integer without a cast
-------------------------

这个警告一般是由于使用了未经声明的函数原型(默认返回值为int型)产生的;
------解决方案--------------------
探讨

我用-Wall选项编译运行这个程序:

#include <time.h>
#include <stdio.h>

char *GetSysTime(void)
{
char *timeMsg;
time_t timeval;
(void)time(&amp;timeval);
if((timeMsg = ctime(&amp;timeval)……