【发布时间】:2011-02-07 14:09:31
【问题描述】:
在 Visual Studio 上,我可以通过声明 _USE_32BIT_TIME_T 来强制使用 32 位 time_t,gcc 是否有类似的等价物?还是总是 32 位还是总是 64 位?
【问题讨论】:
在 Visual Studio 上,我可以通过声明 _USE_32BIT_TIME_T 来强制使用 32 位 time_t,gcc 是否有类似的等价物?还是总是 32 位还是总是 64 位?
【问题讨论】:
time_t 类型不是由 gcc 定义的,而是由系统库定义的。在 Linux 上,这是 glibc,它在 time.h 标头中定义了 time_t:
typedef __time_t time_t;
这又在bits/types.h中定义:
__STD_TYPE __TIME_T_TYPE __time_t;
(__STD_TYPE 定义没意思),
__TIME_T_TYPE 定义在bits/typesizes.h:
#define __TIME_T_TYPE __SLONGWORD_TYPE
这又在bits/types.h中定义:
#define __SLONGWORD_TYPE long int
在 32 位系统上是 32 位,在 64 位系统上是 64 位。所有这些定义都是无条件的,因此在 glibc 上没有 _USE_32BIT_TIME_T 等价物。
【讨论】: