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ありません。それでも、これを使用すると、私のEclipseは次のことを教えてくれますst_mtimest_mtimespecpassing argument 1 of 'gmtime' from incompatible pointer typeclock = 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 に答える