Deklarationskonflikte zwischen time.h und linux / time.h verhindern die Verwendung von CLOCK_TAI

Ich möchte @ verwend

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

aber leiderCLOCK_TAI ist nicht auf Lager definiert time.h header (mindestens in openSUSE 13.2). Es ist jedoch in @ definie linux / time.h und tatsächlich vom Betriebssystem unterstützt. Aber wenn ich den letzteren Header einbinde, provoziert er eine Reihe von Deklarationskonflikten - im Vergleich zu beiden time.h und bits / types.h. Nur das @ einbezieh linux / time.h hilft nicht, da time.h und / oder bits / types.h wird implizit von allgemeinen Headern wie @ eingeschloss unistd.h oder stdlib.h, wie auch immer

Also habe ich versucht, Konflikte manuell zu lösen. Insbesondere die erste Compiler-Fehlermeldung betraftimespec Redeklaration, also schrieb ich in meinen Code:

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

s hat funktioniert, aber nicht ohne einen weiteren Konflikt mititimerspec redeclaration, die in beiden Headern unbedingt deklariert wird und nicht mit Definitionen von Include-Guards abgeschlossen wird. Also habe ich beschlossen, implicit @ zu verbiet time.h Einbeziehung insgesamt:

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

Dies ging mit dem Compiler weiter, der sich über @ beschwetimeval Neuerklärung. Also habe ich implicit @ geban bits / types.h Einbeziehung auch:

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

Okay, aber dies entfernt auch wichtige grundlegende Deklarationen, auf die gebräuchliche Typen wiesize_t basiert auf. Also habe ich versucht, in die entgegengesetzte Richtung zu gehen und @ zu deaktivier linux / types.h Aufnahme

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

ie Sie sich vorstellen können, wurden systemspezifische Typen wie @ erstell__kernel_time_t fehlt, was dazu führte, dass @ nicht deklariert werden konntimespec und so weiter

Deshalb frage ich mich: ist es überhaupt möglich, @ zu verwend linux /… Header in Kombination mit stdlib.h und andere häufig enthaltene Dateien? Gibt es andere Möglichkeiten, auf systemspezifisches @ zuzugreifeCLOCK_TAI Wert

Antworten auf die Frage(0)

Ihre Antwort auf die Frage