Während ich eine C-Quellcodedatei las, fand ich diese Deklarationen. (Dieser Quellcode wurde für das Linux-Systemprogramm geschrieben. Dies sind sehr wichtige Informationen.)
#include <time.h>
#include <stdio.h>
static timer_t* _interval_timer;
...
Zuerst wollte ich mehr über das 'timer_t' wissen. Also habe ich 'time.h' gegoogelt, um Header-Informationen zu erhalten. Aber es gab keine Worte über 'timer_t', sondern nur über 'time_t'.
Aus Neugier suchte und öffnete ich die Standardbibliotheksdatei 'time.h' auf meinem 'Mac'-Computer (wie Sie wissen, speichert der Ordner / usr / include c Standardbibliotheksdateien). Diese Datei war jedoch dieselbe wie die zuvor gegoogelte.
Schließlich schaltete ich mein Linux-Betriebssystem (Ubuntu) mit einer virtuellen Maschine ein und öffnete die 'time.h' im Linux C-Standardbibliotheksordner (der Ordnerpfad ist der gleiche wie bei OSX). Wie erwartet hat die Datei 'time.h' unter Linux die Deklaration timer_t.
Ich habe die folgenden Codezeilen hinzugefügt, die den Typ 'timer_t' deklarieren.
#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;
Meine Frage ist dies.
Warum ist 'timer_t' nur in der Linux C-Standardbibliothek definiert?
Kommt diese Situation häufig vor? Ich meine, gibt es unterschiedlich definierte Funktionen oder Attribute zwischen verschiedenen Betriebssystemen?
timer_t
ist nicht "nur unter Linux definiert", zB auch unter Windows / Cygwin. Gemäß den Definitionen in den Header-Dateien (Linux und Cygwin) scheint es sich um einen POSIX-Standardtyp zu handeln. (Darüber hinaus entsprechen einige Plattformen möglicherweise nicht den Standards. Ich sehe keine spezifische Situation, die "häufig vorkommt", wie Sie sie formuliert haben.) Schreiben Sie Ihre allgemeine Frage zu Unterschieden in Sprachbibliotheken. Dies hängt davon ab, ob Anbieter Standards einhalten oder welche Versionen sie einhalten.