【发布时间】:2012-04-25 23:43:06
【问题描述】:
所以我在 C 中实现 mtime 结构时遇到了麻烦,我试图检查文件的最后修改时间。编译时,我收到此错误:
pr8.1.c:246: error: incompatible types when assigning to type struct timespec from type time_t
make: *** [pr8] Error 1
我使用的代码如下:
static struct timespec mtime(const char *file)
{
struct stat s;
struct timespec t = { 0, 0 };
if (stat(file, &s) == 0)
#if defined(MTIME) && MTIME == 1 // Linux
{ t = s.st_mtime; }
#elif defined(MTIME) && MTIME == 2 // Mac OS X
{ t = s.st_mtimespec; }
#elif defined(MTIME) && MTIME == 3 // Mac OS X, with some additional settings
{ t.tv_sec = s.st_mtime; t.tv_nsec = s.st_mtimensec; }
#else // Solaris
{ t.tv_sec = s.st_mtime; }
#endif
return t;
}
还有结构统计:
struct stat
{ time_t st_mtime; };
附:对格式感到抱歉,我不确定为什么格式会这样。在 Linux 上运行它。提前感谢您的帮助。
【问题讨论】:
-
作为提示,看看其他案例在做什么,并与您展示的
struct statsn-p 进行比较。 (其中一个已经在做正确的事了。) -
我想我理解你的意思,但是如果我删除
stuct stat,我会收到一个编译时错误,即“s”的存储大小未初始化,我想我需要struct stat这个原因? -
不,你没有理解我的意思。与您引用的
st_mtime类型相比,考虑其他案例的情况。 -
我从底部的回复中了解到您现在的意思,谢谢您的回复。我认为 Linux 和那个版本的 Mac OS 不需要它。
标签: c linux time compiler-errors