Los conflictos de declaración entre time.h y linux / time.h me impiden usar CLOCK_TAI

Me gustaria usar

#include <time.h>
clock_gettime(CLOCK_TAI, &...);

pero desafortunadamenteCLOCK_TAI no está definido en stockhora.h encabezado (en openSUSE 13.2 al menos). Sin embargo, se define enlinux / time.h y realmente compatible con el sistema operativo. Pero si incluyo el último encabezado, provoca un montón de conflictos de declaración, frente a amboshora.h ybits / tipos.h. Incluyendo solo ellinux / time.h no ayuda, ya quehora.h y / obits / tipos.h se incluirán implícitamente en encabezados comunes, comounistd.h ostdlib.h, de todas formas.

Así que traté de resolver conflictos manualmente. Particularmente, el primer mensaje de error del compilador fue sobretimespec redeclaración, así que escribí en mi código:

#include <time.h>
#if defined(__timespec_defined) && !defined(_STRUCT_TIMESPEC)
    #define _STRUCT_TIMESPEC
#endif
#include <linux/time.h>

Funcionó, pero no sin otro conflicto conitimerspec redeclaración, que se declara incondicionalmente en ambos encabezados y no se concluye con definiciones de incluir guardias. Entonces decidí prohibir implícitamentehora.h inclusión en conjunto:

#include <linux/time.h>
#ifndef _TIME_H
    #define _TIME_H
#endif

Esto continuó con el compilador quejándose detimeval redeclaración Así que prohibí lo implícitobits / tipos.h inclusión también:

#include <linux/time.h>
#ifndef _TIME_H
    #define _TIME_H
#endif
#ifndef _BITS_TYPES_H
    #define _BITS_TYPES_H
#endif

Muy bien, pero esto también elimina importantes declaraciones básicas, sobre las cuales tipos comunes comosize_t se basan. Así que traté de ir en la dirección opuesta y deshabilitarlinux / types.h inclusión:

#ifndef _LINUX_TYPES_H
    #define _LINUX_TYPES_H
#endif
#include <linux/time.h>
#ifndef _TIME_H
    #define _TIME_H
#endif

Como puedes adivinar, resultó en tipos específicos del sistema como__kernel_time_t falta, lo que condujo a la incapacidad de declarartimespec y así.

Por lo tanto, me pregunto: ¿es posible usarlinux / ... encabezados en combinación constdlib.h y otros archivos comúnmente incluidos? ¿Hay otras formas de acceder a sistemas específicosCLOCK_TAI ¿valor?

Respuestas a la pregunta(0)

Su respuesta a la pregunta