Cのmtime構造体の実装で問題が発生しました。ファイルの最終更新時刻を確認しようとしています。コンパイルするとき、私はこのエラーが表示されます。time_tを使用してCの最後の修正時刻を確認する際の問題
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;
}
そして、構造体のSTAT:
struct stat
{ time_t st_mtime; };
P.S.フォーマットについて申し訳ありませんが、フォーマットがなぜこのように機能しているのかわかりません。 Linuxでこれを実行する。助けを前にありがとう。
ヒントとして、他のケースが行っていることを見て、あなたが示した 'struct stat'スニペットと比較してください。 (そのうちの1人はすでに正しいことをしています) – geekosaur
私はあなたのことを理解していると思いますが、 'stuct stat'を削除した場合、「s」の記憶容量が初期化されていないコンパイル時エラーが発生します。この理由から 'struct stat'が必要でしたか? – joethecoder
いいえ、あなたは私のことを理解していませんでした。あなたが引用した 'st_mtime'のタイプと比較して、他のケースが何をしているのかを考えてください。 – geekosaur