Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
time.h和linux/time.h之间的声明冲突阻止我使用CLOCK_TAI_C_Linux_Time_Time.h - Fatal编程技术网

time.h和linux/time.h之间的声明冲突阻止我使用CLOCK_TAI

time.h和linux/time.h之间的声明冲突阻止我使用CLOCK_TAI,c,linux,time,time.h,C,Linux,Time,Time.h,我想用 #include <time.h> clock_gettime(CLOCK_TAI, &...); 它起作用了,但与itimerspecredclaration存在另一个冲突,它在两个标题中都是无条件声明的,并且没有任何include-guard的定义。所以我决定禁止隐式时间。h包括: #include <linux/time.h> #ifndef _TIME_H #define _TIME_H #endif 好的,但是这也删除了重要的基本声明

我想用

#include <time.h>
clock_gettime(CLOCK_TAI, &...);
它起作用了,但与
itimerspec
redclaration存在另一个冲突,它在两个标题中都是无条件声明的,并且没有任何include-guard的定义。所以我决定禁止隐式时间。h包括:

#include <linux/time.h>
#ifndef _TIME_H
    #define _TIME_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
\ifndef\u LINUX\u类型\u H
#定义LINUX类型
#恩迪夫
#包括
#如果没有时间
#定义时间
#恩迪夫
正如您所猜测的,它导致系统特定的类型丢失,如
\uu kernel\u time\t
,这导致无法声明
timespec
等等



因此我想知道:是否可以将linux/…头文件与stdlib.h和其他常用文件结合使用?是否有其他方法访问特定于系统的
CLOCK\u TAI
值?

如果无法更新glibc,请自行定义它(
)(如果已定义(\uuuuu linux\uuuuuuuu)&&!已定义(CLOCK\u TAI)
)。我怀疑它的价值(
11
)会改变。但也许其他人有更好的解决办法。@cremno我也认为
CLOCK\u xxx
值是通用不变量-直到在Cygwin上认识到,例如,
CLOCK\u REALTIME==1
CLOCK\u MONOTONIC==4
,而通常(在*nix系统上)
CLOCK\u REALTIME==0
时钟单调==1
时钟单调原始==4
。因此,对枚举值进行假设并不是一种可移植的方法。只是为了澄清一下,
CLOCK_TAI
是没有在time.h中定义,还是有条件地在time.h中定义?如果是有条件的,并且失败了,你可以继续走这条路。@donjuedo这是个好主意,但不幸的是,它们都是在一个单独的
\ifdef\uuu USE\u POSIX199309
块中定义的,那里只有代码0到9。如果不可能更新glibc,那么就自己定义它(
\u35;如果定义了(\uu linux\uuuuu)&!定义了(CLOCK\u TAI)
)。我怀疑它的价值(
11
)会改变。但也许其他人有更好的解决办法。@cremno我也认为
CLOCK\u xxx
值是通用不变量-直到在Cygwin上认识到,例如,
CLOCK\u REALTIME==1
CLOCK\u MONOTONIC==4
,而通常(在*nix系统上)
CLOCK\u REALTIME==0
时钟单调==1
时钟单调原始==4
。因此,对枚举值进行假设并不是一种可移植的方法。只是为了澄清一下,
CLOCK_TAI
是没有在time.h中定义,还是有条件地在time.h中定义?如果是有条件的,并且失败了,你可以继续走这条路。@donjuedo好主意,但不幸的是,它们都是在一个
\ifdef\uuuu USE\u POSIX199309
块中定义的,那里只有代码0到9。
#include <linux/time.h>
#ifndef _TIME_H
    #define _TIME_H
#endif
#ifndef _BITS_TYPES_H
    #define _BITS_TYPES_H
#endif
#ifndef _LINUX_TYPES_H
    #define _LINUX_TYPES_H
#endif
#include <linux/time.h>
#ifndef _TIME_H
    #define _TIME_H
#endif