完全に変更された答え:
提案:
1) 以下のヘッダーを必ず #include してください。
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
2)ポインタを「const」にキャストします
time = localtime((const time_t *)&file->st_mtime);
3) 何が起こったかを投稿する
================================================== ===
その他の提案:
1) 次の 2 つのリンクをお読みください。
カーネル 2.5.48 以降、stat 構造体は 3 つのファイル タイムスタンプ フィールドのナノ秒単位の解像度をサポートしています。_BSD_SOURCE または _SVID_SOURCE 機能テスト マクロが定義されている場合、glibc は st_atim.tv_nsec 形式の名前を使用して各フィールドのナノ秒コンポーネントを公開します。これらのフィールドは POSIX.1-2008 で指定されており、バージョン 2.12 以降では、_POSIX_C_SOURCE が 200809L 以上の値で定義されているか、_XOPEN_SOURCE が 700 以上の値で定義されている場合、glibc はこれらのフィールド名も公開します。前述のマクロが定義されていない場合、ナノ秒値は st_atimensec 形式の名前で公開されます。1 秒未満のタイムスタンプをサポートしていないファイル システムでは、ナノ秒フィールドは値 0 で返されます。
2) 明らかに、makefile (「機能する」) には Eclipse にはない #define があります。
おそらく、_POSIX_C_SOURCE および/または _XOPEN_SOURCE のいずれか/両方です。
次のコマンドを実行して、コマンド ライン (makefile?) 環境に何が存在するかを確認します。
gcc -dM -E - < /dev/null | less
3) 見つけたものを投稿してください。