Trong khi tôi đang đọc một tệp mã nguồn C, tôi đã tìm thấy khai báo này. (Mã nguồn này được viết cho chương trình hệ thống linux. Đây là thông tin rất quan trọng)
#include <time.h>
#include <stdio.h>
static timer_t* _interval_timer;
...
Lúc đầu, tôi muốn biết thêm về 'timer_t'. Vì vậy, tôi đã googled 'time.h' để có được thông tin tiêu đề. Nhưng, không có bất kỳ từ nào về 'timer_t', chỉ đề cập đến 'time_t'.
Vì tò mò, tôi đã tìm kiếm và mở tệp thư viện tiêu chuẩn 'time.h' trong máy tính 'mac' của mình (như bạn biết, / usr / bao gồm thư mục lưu trữ các tệp thư viện chuẩn.) Nhưng tệp này giống với tệp đã được googled trước đó.
Cuối cùng, tôi đã bật hệ điều hành linux (ub Ubuntu) của mình bằng máy ảo và thay thế 'time.h' trong thư mục thư viện chuẩn linux c (đường dẫn thư mục giống như OSX). Như tôi dự đoán, tệp 'time.h' trong linux có khai báo timer_t.
Tôi đã thêm các dòng mã khai báo loại 'timer_t' bên dưới.
#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;
Câu hỏi của tôi là này.
Tại sao 'timer_t' chỉ được xác định trong thư viện chuẩn linux c?
Tình trạng này có thường xảy ra không? Ý tôi là, có bất kỳ chức năng hoặc thuộc tính được xác định khác nhau giữa các hệ điều hành khác nhau không?
timer_t
không "chỉ được xác định trong linux", ví dụ như trên Windows / Cygwin, nó cũng được xác định. Theo các định nghĩa trong các tệp tiêu đề (Linux và Cygwin), nó dường như là một loại tiêu chuẩn POSIX. (Ngoài ra, một số nền tảng có thể không tuân thủ các tiêu chuẩn mà tôi không thấy bất kỳ tình huống cụ thể nào "thường xảy ra", như bạn đã xây dựng nó.) WRT câu hỏi chung của bạn về sự khác biệt trong các thư viện ngôn ngữ; nó phụ thuộc vào việc các nhà cung cấp tuân thủ các tiêu chuẩn hay với những phiên bản mà họ tuân thủ.