Typedef 警告和语法错误 LPINPUT

Posted

技术标签:

【中文标题】Typedef 警告和语法错误 LPINPUT【英文标题】:Typedef warning and Syntax Error LPINPUT 【发布时间】:2014-04-17 20:36:23 【问题描述】:

我在编译一些使用 Direct Input 8 的代码时遇到了问题。我的代码中的其他所有内容都可以正常工作,但是当输入代码被编译时,会弹出这个警告和错误序列。

    1>  Input.cpp
    1>c:\program files (x86)\windows kits\8.0\include\um\winuser.h(5826): warning C4091:     'typedef ' : ignored on left of 'tagINPUT' when no variable is declared
    1>c:\program files (x86)\windows kits\8.0\include\um\winuser.h(5826): error C2143: syntax error : missing ';' before ','
    1>c:\program files (x86)\windows kits\8.0\include\um\winuser.h(5826): error C2059: syntax error : ','
    1>c:\program files (x86)\windows kits\8.0\include\um\winuser.h(5833): error C2061: syntax error : identifier 'LPINPUT'

这是在 Visual Studio 2012 中。关于可能导致此问题的任何想法?我检查了我的其余代码是否缺少分号和逗号,但我找不到任何东西。有没有人遇到过类似的问题?

这里是 winuser.h 中的环绕行

#define INPUT_MOUSE     0
#define INPUT_KEYBOARD  1
#define INPUT_HARDWARE  2

typedef struct tagINPUT 
    DWORD   type;

    union
    
        MOUSEINPUT      mi;
        KEYBDINPUT      ki;
        HARDWAREINPUT   hi;
    ;
line 5826  INPUT, *PINPUT, FAR* LPINPUT;

Input.H 中的当前包括

#include<dinput.h>
#include"MemUtils.h"

而 Input.cpp 只包含 Input.H

【问题讨论】:

如果您认为 winuser.h 中第 5826 行及其周围行的内容可能与此问题相关,那么您是对的。 你能显示来自 input.cpp 的包含吗? 添加了您的两个建议 【参考方案1】:

我在 input.h 文件中使用了一些宏。

#ifndef INPUT
#define INPUT

这是导致此问题的一个严重且愚蠢的错误。对这一切感到抱歉。

【讨论】:

以上是关于Typedef 警告和语法错误 LPINPUT的主要内容,如果未能解决你的问题,请参考以下文章

keil5中编写代码时出现语法错误为什么无显示

Xcode解决代码高亮语法提示错误警告等功能失效的解决方法

vue-cli 中 eslint 语法错误警告解决

typedef关键字

Linux man语法结构说明

typedef enum和函数声明的问题,程序如下,是我enum语法用错了还是函数声明用错了呢?