Muito do que o POSIX tem focado é a elaboração de coisas que não fazem parte da ISO C. O Time.h é, mas a versão ISO não inclui o tipo timer_t
ou quaisquer funções que o utilizam. Estes são da extensão POSIX , portanto esta referência no cabeçalho do linux:
#if !defined __timer_t_defined && \
((defined _TIME_H && defined __USE_POSIX199309)
O __USE_POSIX199309
é um símbolo glibc interno que é configurado em features.h quando _POSIX_C_SOURCE >= 199309L
, significando que POSIX.1b deve ser suportado (veja o feature_test_macros manpage). Isso também é suportado com _XOPEN_SOURCE >= 600
.
are there any differently defined functions or attributes between different OS?
Eu acho que no que diz respeito ao C, entre os sistemas POSIX, há um esforço para evitar isso, mas isso acontece. Existem algumas extensões GNU (por exemplo, sterror_r()
) que possuem assinaturas incompatíveis de suas contrapartes POSIX. Possivelmente isso acontece quando POSIX pega a extensão mas a modifica, ou então são apenas alternativas sonhadas pelo GNU - você pode optar por uma ou outra usando um #define
apropriado.