8

我想在 C 中获取文件的最后修改日期。我发现的几乎所有来源都使用这个片段中的一些东西:

char *get_last_modified(char *file) {
    struct tm *clock;
    struct stat attr;

    stat(file, &attr);
    clock = gmtime(&(attr.st_mtime));

    return asctime(clock);
}

但是attr甚至没有字段st_mtime,只有st_mtimespec。然而,当使用这个时,我的 Eclipse 告诉我passing argument 1 of 'gmtime' from incompatible pointer type就行了clock = gmtime(&(attr.st_mtimespec));

我究竟做错了什么?

PS:我正在开发 OSX Snow Leopard、Eclipse CDT 并使用 GCC 作为跨平台编译器

4

1 回答 1

6

在 OS X 上,st_mtimespec.tv_sec相当于st_mtime.

为了使这个便携,做

#ifdef __APPLE__
#ifndef st_mtime
#define st_mtime st_mtimespec.tv_sec
#endif
#endif

然后使用st_mtime.

于 2012-07-07T08:42:54.220 回答