Je voudrais utiliser
#include clock_gettime(CLOCK_TAI, &...);
mais malheureusement, CLOCK_TAI
n’est pas défini dans l’en – tête stock time.h (au moins dans openSUSE 13.2). Il est toutefois défini dans linux / time.h et est pris en charge par le système d’exploitation. Mais si j’inclue ce dernier en-tête, cela provoque une série de conflits de déclaration – par rapport à la fois à time.h et à bits / types.h . Inclure uniquement le fichier linux / time.h n’aide pas, car les fichiers time.h et / ou bits / types.h seront implicitement inclus dans les en-têtes communs, comme unistd.h ou stdlib.h .
J’ai donc essayé de résoudre les conflits manuellement. En particulier, le premier message d’erreur du compilateur concernait la redéclaration de timespec
, alors j’ai écrit dans mon code:
#include #if defined(__timespec_defined) && !defined(_STRUCT_TIMESPEC) #define _STRUCT_TIMESPEC #endif #include
Cela a fonctionné, mais non sans un autre conflit avec la redéclaration itimerspec
, qui est déclarée sans condition dans les deux en-têtes et ne se termine pas par la définition de tout type de garde. J’ai donc décidé d’interdire totalement l’ inclusion implicite de time.h :
#include #ifndef _TIME_H #define _TIME_H #endif
Cela continua avec le compilateur se plaignant de la redéclaration de timeval
. J’ai donc également interdit l’inclusion implicite de bits / types.h :
#include #ifndef _TIME_H #define _TIME_H #endif #ifndef _BITS_TYPES_H #define _BITS_TYPES_H #endif
D’accord, mais cela supprime également les déclarations de base importantes, sur lesquelles sont basés des types courants tels que size_t
. J’ai donc essayé d’aller dans le sens opposé et de désactiver l’inclusion linux / types.h :
#ifndef _LINUX_TYPES_H #define _LINUX_TYPES_H #endif #include #ifndef _TIME_H #define _TIME_H #endif
Comme vous pouvez le deviner, des types spécifiques au système tels que __kernel_time_t
été manqués, ce qui a timespec
déclaration de timespec
, etc.
Je me demande donc: est-il possible d’utiliser des en – têtes linux /… en combinaison avec stdlib.h et d’autres fichiers couramment inclus? Existe-t-il d’autres moyens d’accéder à la valeur CLOCK_TAI
spécifique au CLOCK_TAI
?