我有一些代码,可以在Windows和Linux上构建。此时,Linux始终是32位的,而Windows则是32位和64位的。Windows希望
有什么聪明的方法可以解决这个问题吗?另外:您有什么办法可以找到所有将
编辑: 我想到了将
成为
有没有更好的方法?我要如何找到它们全部呢?
time_t
为64位,而Linux仍然将其作为32位处理。我对此没有意见,除非在某些地方将time_t
值转换为字符串。因此,当time_t
为32位时,应使用%d
进行转换,而当它为64位时应使用%lld
...有什么聪明的方法可以解决这个问题吗?另外:您有什么办法可以找到所有将
time_t
传递给printf风格函数的地方来解决这个问题吗?
编辑: 我想到了将
TT_FMT
声明为%d
或%lld
,然后将我的printf
更改为以下内容。printf("time: %d, register: blah")
成为
printf("time: " TT_FMT ", register: blah")
有没有更好的方法?我要如何找到它们全部呢?
time_t
大小的并不是 Windows,而是你所使用的 C 库。例如,在 MSVC 中,你可以定义_USE_32BIT_TIME_T
来强制使用 32 位时间。然而,我相当确定断言“Linux 在这一点上总是 32 位”是不正确的。情况比那更复杂! - Clifford