Ketika saya sedang membaca file kode sumber C, saya menemukan deklarasi ini. (Kode sumber ini ditulis untuk program sistem linux. Ini adalah informasi yang sangat penting)
#include <time.h>
#include <stdio.h>
static timer_t* _interval_timer;
...
Pada awalnya, saya ingin tahu lebih banyak tentang 'timer_t'. Jadi saya mencari di Google 'time.h' untuk mendapatkan informasi header. Tapi, tidak ada kata-kata tentang 'timer_t', hanya menyebutkan tentang 'time_t'.
Dengan rasa ingin tahu, saya mencari dan membuka 'time.h' c file library standar di komputer 'mac' saya (seperti yang Anda tahu, / usr / termasuk folder store c file library standar.) Tetapi file ini sama dengan yang sudah di-google sebelumnya.
Akhirnya, saya menyalakan os linux saya (ubuntu) menggunakan mesin virtual dan membuka 'time.h' di folder library standar c linux (path folder sama dengan OSX). Seperti yang saya harapkan, file 'time.h' di linux memiliki deklarasi timer_t.
Saya menambahkan baris kode yang menyatakan tipe 'timer_t' di bawah ini.
#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;
Pertanyaan saya adalah ini.
Mengapa 'timer_t' hanya didefinisikan di linux c library standar?
Apakah situasi ini biasa terjadi? Maksud saya, apakah ada fungsi atau atribut yang didefinisikan secara berbeda di antara OS yang berbeda?
timer_t
ini tidak "hanya didefinisikan di linux", misalnya pada Windows / Cygwin, juga didefinisikan. Menurut definisi dalam file header (Linux dan Cygwin) tampaknya menjadi tipe standar POSIX. (Selain itu beberapa platform mungkin tidak sesuai dengan standar, saya tidak melihat situasi spesifik yang "biasa terjadi", seperti yang Anda rumuskan.) WRT pertanyaan umum Anda tentang perbedaan dalam perpustakaan bahasa; itu tergantung pada apakah vendor mematuhi standar atau dengan versi apa yang mereka patuhi.