Поки я читав файли вихідного коду на C, я знайшов цю декларацію. (Цей вихідний код був написаний для системної програми Linux. Це дуже важлива інформація)
#include <time.h>
#include <stdio.h>
static timer_t* _interval_timer;
...
Спочатку я хотів дізнатися більше про "timer_t". Тому я гуглив 'time.h', щоб отримати інформацію про заголовки. Але про "timer_t" не було жодних слів, згадуючи лише про "time_t".
З цікавості я здійснив пошук і відкрив стандартний файл бібліотеки 'time.h' c в моєму комп'ютері «mac» (як ви знаєте, / usr / include folder store c стандартні файли бібліотеки.) Але цей файл був однаковим із попереднім googled.
Нарешті, я включив свій linux os (ubuntu) за допомогою віртуальної машини та відкрив 'time.h' у стандартній папці бібліотеки linux c (шлях до папки такий же, як у OSX). Як я і очікував, файл 'time.h' в Linux має декларацію timeer_t.
Я додав рядки коду, які оголошують тип 'timer_t' нижче.
#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;
Моє запитання таке.
Чому "timer_t" визначено лише у стандартній бібліотеці linux c?
Чи трапляється така ситуація зазвичай? Я маю на увазі, чи існують різні функції або атрибути між різними ОС?
timer_t
не "визначено лише в Linux", наприклад, для Windows / Cygwin він також визначений. Відповідно до визначень у файлах заголовків (Linux та Cygwin), схоже, це стандарт типу POSIX. (Крім того, що деякі платформи можуть не відповідати стандартам, я не бачу конкретної ситуації, яка "зазвичай трапляється", як ви це сформулювали.) Напишіть своє загальне питання про відмінності в мовних бібліотеках; це залежить від того, чи відповідають постачальникам стандарти, або яким версіям вони відповідають.