Bir C kaynak kodu dosyasını okurken, bu bildirimleri buldum. (Bu kaynak kodu linux sistem programı için yazılmıştır. Bu çok önemli bir bilgidir)
#include <time.h>
#include <stdio.h>
static timer_t* _interval_timer;
...
İlk başta 'timer_t' hakkında daha fazla bilgi edinmek istedim. Bu yüzden başlık bilgisi almak için 'time.h' yazdım. Ancak, 'timer_t' hakkında herhangi bir kelime yoktu, sadece 'time_t' den bahsediyordu.
Merakla, 'mac' bilgisayarımda 'time.h' c standart kütüphane dosyasını araştırdım ve açtım (bildiğiniz gibi, / usr / include klasör depoları c standart kütüphane dosyaları.) Ama bu dosya önceki googled dosyayla aynıydı.
Son olarak, sanal makineyi kullanarak linux os'umu (ubuntu) açtım ve linux c standart kütüphane klasöründeki 'time.h' dosyasını açtım (klasör yolu OSX ile aynıdır). Beklediğim gibi, linux'daki 'time.h' dosyasının timer_t bildirimi var.
Aşağıda 'timer_t' türünü bildiren kod satırlarını ekledim.
#if !defined __timer_t_defined && \
((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timer_t)
# define __timer_t_defined 1
# include <bits/types.h>
/* Timer ID returned by `timer_create'. */
typedef __timer_t timer_t;
Sorum şu.
Neden 'timer_t' yalnızca linux c standart kitaplığında tanımlanır?
Bu durum yaygın mı oluyor? Yani, farklı işletim sistemleri arasında farklı tanımlanmış işlevler veya öznitelikler var mı?
timer_t
"yalnızca linux'da tanımlanmış" değildir, örneğin Windows / Cygwin'de de tanımlanmıştır. Başlık dosyalarındaki (Linux ve Cygwin) tanımlara göre, POSIX standart tipi gibi görünüyor. (Bazı platformların standartlara uymayabileceğinin ötesinde, siz formüle ettiğinizde "yaygın olarak meydana gelen" herhangi bir özel durum görmüyorum.) Dil kütüphanelerindeki farklılıklar hakkındaki genel sorunuzu yazın; satıcıların standartlara mı yoksa hangi sürümlere uyduklarına bağlıdır.