我正在尝试编写几年前我写的一个模拟鼠标点击和击键的程序.我把它简化为这个最小的例子:
#include "Windows.h"
int main(){
INPUT foo;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误:
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'
Run Code Online (Sandbox Code Playgroud)
MSDN在INPUT上的页面说它是在Windows.h中定义的,所以我不知道为什么它不能识别这种类型.
另一个stackoverflow用户在这里有类似的问题,但他们的解决方案,添加#define _WIN32_WINNT 0x0500,没有修复错误.
几年前我在Windows XP上构建了这个程序.是不是INPUT在Windows 7上的运行方式与它在XP上的运行方式不同?或者我忘了给编译器提供一个标志?
你#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;
}
Run Code Online (Sandbox Code Playgroud)
作为旁注,除非windows.h与源文件位于同一目录中,否则通常应使用#include <>而不是导入#include "".