Enquanto eu estava lendo os arquivos de código-fonte C, encontrei essas declarações. (Este código fonte foi escrito para o programa de sistema Linux. Esta é uma informação muito importante)
#include <time.h>
#include <stdio.h>
static timer_t* _interval_timer;
...
No começo, eu queria saber mais sobre o 'timer_t'. Então, pesquisei 'time.h' para obter informações do cabeçalho. Mas não havia palavras sobre 'timer_t', apenas mencionando 'time_t'.
Por curiosidade, procurei e abri o arquivo de biblioteca padrão 'time.h' c no meu computador 'mac' (como você sabe, a pasta / usr / include armazena c arquivos de biblioteca padrão.) Mas esse arquivo era o mesmo do anterior pesquisado no Google.
Finalmente, ativei meu sistema operacional linux (ubuntu) usando a máquina virtual e abro o 'time.h' na pasta da biblioteca padrão do linux c (o caminho da pasta é o mesmo do OSX). Como eu esperava, o arquivo 'time.h' no linux possui uma declaração de timer_t.
Eu adicionei as linhas de código que declaram o tipo 'timer_t' abaixo.
#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;
Minha pergunta é essa.
Por que 'timer_t' é definido apenas na biblioteca padrão do linux c?
Essa situação geralmente acontece? Quero dizer, existem funções ou atributos definidos de maneira diferente entre diferentes sistemas operacionais?
timer_t
não é "apenas definido no linux", por exemplo, no Windows / Cygwin, também é definido. De acordo com as definições nos arquivos de cabeçalho (Linux e Cygwin), parece ser um tipo padrão POSIX. (Além de que algumas plataformas podem não estar em conformidade com os padrões, não vejo nenhuma situação específica que "geralmente aconteça", como você a formulou.) WRT sua pergunta geral sobre diferenças nas bibliotecas de idiomas; depende se os fornecedores cumprem com os padrões ou com quais versões eles cumprem.