GNU GCC 代码块 win32 函数未声明

GNU GCC Codeblocks win32 function not declared

这是我项目中库中的一段代码 (Implot):

#ifdef _WIN32
    t.S = _mkgmtime(ptm);

...

#ifdef _WIN32
  if (gmtime_s(ptm, &t.S) == 0)

...

#ifdef _WIN32
  if (localtime_s(ptm, &t.S) == 0)

并且该项目刚刚从 Visual Studio 2019 移植到 Codeblocks (C++17)。由于某种原因,这无法编译,当我搜索错误时,我在网上找不到任何东西。

error '_mkgmtime' was not declared in this scope
error 'gmtime_s' was not declared in this scope
error 'localtime_s' was not declared in this scope

我知道这些错误是因为缺少函数,这很可能是由于缺少包含文件,但是这些错误已在 Visual Studio 2019 年使用,没有对任何源代码进行任何更改并且可以正常工作那里很好。为什么这不起作用,我该如何解决?

如果您阅读 the Visual Studio predefined macros documentation,您可以找到特定于编译器的宏,这些宏可用于识别您的代码是否由 Visual Studio C++ 编译器构建。

例如 _MSC_VER 宏,您可以检查它而不是 _WIN32

如:

#ifdef _MSC_VER
auto result = gmtime_s(ptm, &t.S);// Visual Studio
#else
auto result = gmtime(ptm);        // Anything else (like e.g. GCC)
#endif

if (result == nullptr) ...