0

私は C で FUSE をいじっていて、非常に遠い将来に作成されるように見えるファイルを作成したかったのです。FUSE で書いているカスタム stat() 関数は struct stat* stbuf に書き込み、次のようなことをしたい

stbuf->st_ctime = (1 << 39) - 1;

作成された日付を途方もなく長い未来に取得するには。

私はこれを 64 ビットの Linux システムで実行しているので、time_t は 64 ビットの値であると予想されます。実際、単に printf("%d\n",(int) sizeof(x)); プログラムで time_t のサイズをテストするには、8 を取得します。ただし、警告をオンにしてコードをコンパイルすると、

warning: left shift count >= width of type [enabled by default]

取得したマウントされたファイルシステムでファイルを統計するときの変更時間

1969-12-31 15:59:59.000000000 -0800

実際の値が 0 であるかのように。64 ビットの time_t が必要な 64 ビット システムでこれが発生する理由を知っている人はいますか?

4

1 に答える 1

6

では、 ではなく1 << 39をシフトしています。inttime_t

于 2012-10-04T21:19:23.777 に答える