c++ - mingw中的时间函数

标签 c++ windows gcc network-programming mingw

我正在尝试实现此页面中给出的代码

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366062%28v=vs.85%29.aspx

我正在使用 mingw (gcc) 来编译它。 但是不能编译以下行。我已经包含了“time.h”。我进行了搜索,但找不到此“_localtime31_s”或其在 gcc 中的等效项。

error = _localtime32_s(&newtime, (__time32_t*) &pAdapter->LeaseObtained);
error = asctime_s(buffer, 32, &newtime);

这里的时间函数在哪里? 谢谢

最佳答案

函数 localtime_sasctime_s 是 Microsoft 特定的扩展,由(某些版本的)MS 运行时库提供。这是由 MS 头文件提供的。由于这些是 MS 的版权并且不允许免费分发,mingw 提供了它自己的 header 版本 - 这些可能不包含这些扩展(当我在我的本地机器上使用 mingw 时他们肯定没有一段时间 - 我的主要这些天机器运行 Linux ...)。

请注意,将时间值转换为 time32_t * 可能不是一个好主意 - 如果您使用 time_t 编译代码,几乎肯定会咬到您不是 32 位值。

localtime_r函数是一个半标准版本,可以用来代替 localtime_s(您需要注意 32 位与 64 位时间值)。您当然也可以使用 localtime(除了必须关闭 MS 烦人的“此功能不安全,请改用 ..._s” - 我不 < em>真的 想将我对 strcpy 的 100 次使用转换为 strcpy_s,因为它已经在别处检查过,所以工作得很好)。

同样有asctime_r它提供了一个可重入版本。

也许您也可以将这些函数的原型(prototype)添加到文件中的某处,我相信只要您是为 Windows 编译,就可以解决问题:

MS 函数文档链接:localtime_sasctime_s .

关于c++ - mingw中的时间函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17085603/

相关文章:

c++ - 字符数组初始化和尾随 null

python - 在 Windows 7 x64 中的 PyPy3.5 v5.10 上使用 ensurepip 进行 pip 安装

c - 在哪里更改 LD_LIBRARY_PATH

c++ - 编译时检测不应该抛出但仍然抛出的函数(noexcept 或替代方法)

c++ - 所需的最少出租车(算法)

ruby - 类型 2 虚拟主机是否受到与主机操作系统相同的限制?

c - 为什么 -O1 比 -O2 快

c++ - 为什么 strtoul 不能按预期工作?

c++ - 使用 cblas_dgemv() 的矩阵 vector 积的结果不正确

windows - 在 Windows .bat 文件中使用 cd 没有效果