c++ - code::blocks 出现奇怪的编译器错误

标签 c++ c winapi

我昨天从 Visual Studio 切换到 Code::Blocks,只是收到了一些奇怪的编译器错误消息。

我包含了 windows.h,我可以很好地使用所有 API 调用,例如创建窗口类和创建窗口/按钮等等。但是,当我尝试使用 SendInput() 发送一些按键时,我收到了关于这两个声明的错误消息:

INPUT ip;
KEYBDINPUT kbi;

编译器错误:

C:\code_blocks\test-app\main.cpp|21|error: 'INPUT' was not declared in this scope|
C:\code_blocks\test-app\main.cpp|22|error: 'KEYBDINPUT' was not declared in this scope|

我什至可以右键单击 KEYBDINPUTINPUT 结构并单击“查找声明”,它会在“winuser.h”(位于内部)中找到它,但它仍然给我这些未声明的错误消息。

此代码在 VS 中运行良好,仅包含 windows.h。我正在使用 GNU GCC 编译器。

最佳答案

我认为您需要预处理器指令(Visual Studio 可能已经添加了它们):

您将 _WIN32_WINNT 定义为什么?

也许你可以添加:

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400
#endif

或者您可以将其作为编译序列的一部分添加到预处理器指令中。任何好的编译器都会有它。

如果还是不行,去掉include guards,直接定义。也许它在别处得到定义。

有些编译器会在预处理器指令设置中有这个:WIN32,_DEBUG,_CONSOLE,_MBCS,_WIN32_WINNT=0x0400

关于c++ - code::blocks 出现奇怪的编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3268252/

相关文章:

c++ - 实现基于迭代器的 shell 排序

c++ - 我的代码正确地旋转了一张 bmp 图片,但前提是像素数是 4 的倍数......任何人都可以看出问题所在吗?

c - 如何在 C 中处理负数 : getting quotient and remainder without the '/' , '%' 和 '*' 运算符

可以优化这种不稳定的访问吗?

c - 将可变数量的参数传递给 C 函数

winapi - WindowsFromDc 返回 null

c# - 如何在 C# 中监听 Windows 事件?

delphi - 当应用程序不处理 DPI 的运行时更改时,如何重置应用程序强加的兼容模式?

c++ - 模棱两可的可变类成员访问

c++ - 实现链表[C++]编译错误