C 소스 코드 파일을 읽는 동안이 선언을 찾았습니다. (이 소스 코드는 리눅스 시스템 프로그램을 위해 작성되었습니다. 이것은 매우 중요한 정보입니다)
#include <time.h>
#include <stdio.h>
static timer_t* _interval_timer;
...
처음에는 'timer_t'에 대해 더 알고 싶었습니다. 그래서 'time.h'를 검색하여 헤더 정보를 얻었습니다. 그러나 'timer_t'에 대해서는 언급하지 않았으며 'time_t'에 대해서만 언급했습니다.
호기심으로, 나는 'mac'컴퓨터에서 'time.h'c 표준 라이브러리 파일을 검색하고 열었습니다 (알다시피, / usr / include 폴더는 c 표준 라이브러리 파일을 저장합니다). 그러나이 파일은 이전 Google 검색 파일과 동일합니다.
마지막으로 가상 머신을 사용하여 Linux os (우분투)를 켜고 linux c 표준 라이브러리 폴더 (폴더 경로는 OSX와 동일)에서 'time.h'를 열었습니다. 내가 예상했듯이 리눅스의 'time.h'파일에는 timer_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 표준 라이브러리에만 정의되어 있습니까?
이 상황은 일반적으로 발생합니까? 다른 OS간에 다르게 정의 된 기능이나 특성이 있습니까?
timer_t
은 "리눅스에서만 정의"되지 않으며, 예를 들어 Windows / Cygwin에서도 정의됩니다. 헤더 파일 (Linux 및 Cygwin)의 정의에 따르면 POSIX 표준 유형 인 것 같습니다. (일부 플랫폼은 표준을 준수하지 않을 수 있다는 점 외에도 공식적으로 공식화 할 때 "일반적으로 발생하는"특정 상황이 보이지 않습니다.) 언어 라이브러리의 차이점에 대한 일반적인 질문. 벤더가 표준을 준수하는지 또는 어떤 버전을 준수하는지에 따라 다릅니다.