我正在尝试编译我几年前编写的一个模拟鼠标点击和击键的程序。我已将其简化为这个最小的示例:
#include "Windows.h"
int main(){
INPUT foo;
return 0;
}
它给我这个错误:
C:\projects\clicker>g++ minimaltest.cpp
minimaltest.cpp: In function 'int main()':
minimaltest.cpp:4:2: error: 'INPUT' was not declared in this scope
minimaltest.cpp:4:8: error: expected ';' before 'foo'
MSDN 页面 INPUT说是在Windows.h中定义的,不知道为什么不识别类型。
另一个stackoverflow用户有类似的问题here ,但他们的解决方案,添加 #define _WIN32_WINNT 0x0500
,并没有修复错误。
几年前我就能够在 Windows XP 上构建程序。难道 INPUT 不能像在 XP 上那样在 Windows 7 上工作吗?或者我可能忘了向编译器提供标志?
最佳答案
您放错了 #define
在#include
之后.结果是 windows.h
看到 _WIN32_WINNT
因为未定义,所以 INPUT
未声明。然后你在INPUT
之后定义它存在的机会已经过去。
#define _WIN32_WINNT 0x0500 //RIGHT
#include "Windows.h"
#define _WIN32_WINNT 0x0500 //WRONG
int main(){
INPUT foo;
return 0;
}
作为旁注,除非windows.h
与源文件位于同一目录中,通常应使用 #include <>
导入而不是 #include ""
.
关于c++ - “INPUT”未在此范围内声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11596219/