Artikel artikel time_t Wikipedia menjelaskan hal ini. Intinya adalah jenis time_t
tidak dijamin dalam spesifikasi C.
time_t
tipe data adalah tipe data di pustaka ISO C yang ditentukan untuk menyimpan nilai waktu sistem. Nilai tersebut dikembalikan daritime()
standar fungsi perpustakaan. Tipe ini adalah atypedef yang didefinisikan di header standar. ISO C mendefinisikan time_t sebagai jenis aritmatika, tetapi tidak menentukan jenis tertentu ,rentang, resolusi, atau enkode untuknya. Arti operasi aritmatika yang diterapkan pada nilai waktu juga tidak ditentukan.Sistem yang sesuai dengan Unix dan POSIX mengimplementasikan
time_t
ketik sebagaisigned integer
(biasanya selebar 32 atau 64 bit) yang mewakili jumlah detik sejak awal zaman Unix :tengah malam UTC tanggal 1 Januari 1970 (tidak termasuk detik kabisat). Beberapa sistem dengan benar menangani nilai waktu negatif, sementara yang lainnya tidak. Sistem menggunakantime_t
32-bit tipe rentan terhadap masalah Tahun 2038.
[root]# cat time.c
#include <time.h>
int main(int argc, char** argv)
{
time_t test;
return 0;
}
[root]# gcc -E time.c | grep __time_t
typedef long int __time_t;
Ini didefinisikan dalam $INCDIR/bits/types.h
melalui:
# 131 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/typesizes.h" 1 3 4
# 132 "/usr/include/bits/types.h" 2 3 4
Standar
William Brendel mengutip Wikipedia, tapi saya lebih suka dari mulut kuda.
Draf standar C99 N1256 7.23.1/3 "Komponen waktu" mengatakan:
Jenis yang dideklarasikan adalah size_t (dijelaskan dalam 7.17) clock_t dan time_t yang merupakan jenis aritmatika yang mampu merepresentasikan waktu
dan 6.2.5/18 "Tipe" mengatakan:
Tipe integer dan floating secara kolektif disebut tipe aritmatika.
POSIX 7 sys_types.h berkata:
[CX] time_t akan menjadi tipe integer.
di mana [CX]
didefinisikan sebagai:
[CX] Ekstensi ke standar ISO C.
Ini adalah perpanjangan karena memberikan jaminan yang lebih kuat:floating point keluar.
gcc satu baris
Tidak perlu membuat file seperti yang disebutkan oleh Quassnoi:
echo | gcc -E -xc -include 'time.h' - | grep time_t
Di Ubuntu 15.10 GCC 5.2, dua baris teratas adalah:
typedef long int __time_t;
typedef __time_t time_t;
Perincian perintah dengan beberapa kutipan dari man gcc
:
-E
:"Berhenti setelah tahap prapemrosesan; jangan menjalankan kompiler sebagaimana mestinya."-xc
:Tentukan bahasa C, karena input berasal dari stdin yang tidak memiliki ekstensi file.-include file
:"Proses file seolah-olah "#include "file"" muncul sebagai baris pertama dari file sumber utama."-
:masukan dari stdin