Конфликты объявлений между time.h и linux / time.h не позволяют мне использовать CLOCK_TAI

Я хотел бы использовать

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

но, к сожалениюCLOCK_TAI не определено на складеtime.h заголовок (по крайней мере, в openSUSE 13.2). Однако это определяется вLinux / time.h и фактически поддерживается операционной системой. Но если я включу последний заголовок, это вызовет кучу конфликтов объявления - по сравнению с обоимиtime.h а такжебит / types.h, Включая толькоLinux / time.h не помогает, так какtime.h и / илибит / types.h будут неявно включены общими заголовками, такими какunistd.h или жеstdlib.h, тем не мение.

Поэтому я попытался разрешить конфликты вручную. В частности, первое сообщение об ошибке компилятора было оtimespec объявление, так что я написал в своем коде:

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

Это сработало, но не без еще одного конфликта сitimerspec повторное объявление, которое объявляется безоговорочно в обоих заголовках и не заканчивается определениями каких-либо охранников. Поэтому я решил запретить скрытоеtime.h Включение в целом:

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

Это продолжилось с жалобами компилятора наtimeval переопределение. Поэтому я забанен неявнымбит / types.h включение также:

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

Хорошо, но это также удаляет важные базовые объявления, на которых распространены такие типы, какsize_t основаны. Поэтому я попытался пойти в обратном направлении и отключитьLinux / types.h включение:

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

Как вы можете догадаться, это привело к системным типам, таким как__kernel_time_t пропал без вести, что привело к невозможности заявитьtimespec и так далее.

Вот мне и интересно: можно ли вообще использоватьLinux / ... заголовки в сочетании сstdlib.h и другие часто включаемые файлы? Существуют ли другие способы доступа к системеCLOCK_TAI значение?

Ответы на вопрос(0)

Ваш ответ на вопрос