我昨天从 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|
我什至可以右键单击 KEYBDINPUT
和 INPUT
结构并单击“查找声明”,它会在“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/