在Visual Studio上,我可以通过声明_USE_32BIT_TIME_T来强制使用32位time_t吗?gcc是否有类似的等价物?或者它总是32位还是总是64位?
该time_t类型不是由gcc定义的,而是由系统库定义的.在Linux上,这是glibc,它time_t在time.h头文件中定义:
typedef __time_t time_t;
Run Code Online (Sandbox Code Playgroud)
其中定义bits/types.h如下:
__STD_TYPE __TIME_T_TYPE __time_t;
Run Code Online (Sandbox Code Playgroud)
(__STD_TYPE定义不是很有趣),
__TIME_T_TYPE定义bits/typesizes.h如下:
#define __TIME_T_TYPE __SLONGWORD_TYPE
Run Code Online (Sandbox Code Playgroud)
其中定义bits/types.h如下:
#define __SLONGWORD_TYPE long int
Run Code Online (Sandbox Code Playgroud)
32位系统为32位,64位系统为64位.所有这些定义都是无条件的,因此,_USE_32BIT_TIME_Tglibc上没有相应的定义.