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) ...
这是我项目中库中的一段代码 (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) ...