visual C+中的编译错误+;
我正在使用VisualStudio2010构建C项目。我的项目包含许多头文件、源文件和解析器。它使用visual C+中的编译错误+;,c,visual-c++,compiler-errors,yacc,C,Visual C++,Compiler Errors,Yacc,我正在使用VisualStudio2010构建C项目。我的项目包含许多头文件、源文件和解析器。它使用lex和bason文件。我在编译过程中遇到了一个错误,下面是 abc.y:error C2065: 'INPUT' : undeclared identifier 我尝试了我想要的解决方案,包括 #define WIN32_WINNT >= 0x0501 在我的主.c文件中包含任何头文件之前。我无法消除此错误。你能告诉我这个错误的原因吗 编辑 显示错误的代码片段是: list
lex
和bason
文件。我在编译过程中遇到了一个错误,下面是
abc.y:error C2065: 'INPUT' : undeclared identifier
我尝试了我想要的解决方案,包括
#define WIN32_WINNT >= 0x0501
在我的主.c文件中包含任何头文件之前。我无法消除此错误。你能告诉我这个错误的原因吗
编辑
显示错误的代码片段是:
list_Cons(0, list_List((POINTER)INPUT)
令人惊讶的是,如果我将输入更改为INPUT1,我会得到相同的错误。改变是坚忍的编译器不能处理**文件。为此,您需要一个yacc/bison程序,该程序未随Visual Studio 2010附带。您可能会阅读和阅读
#定义WIN32_WINNT>=0x0501
不起作用。您应该尝试改用#define WIN32_WINNT 0x0501
另外,检查您是否真的包括我自己使用的winuser.h,它可以生成MSVC项目以及其他构建类型。您可以告诉它a.y超出了C/C++文件,它将指示MSVC调用任何必要的外部工具来预处理非C/C++部分。这就是您要找的吗。如果看不到代码,就说不出更多。失败的代码是从哪里来的?它是否在
yacc
生成的文件中?在这种情况下,您必须查阅yacc的手册。我认为VS2010没有关于如何编译*.y
的内置规则,因此问题一定在其他地方。我已经生成了yaac和lex文件使用lex和bison生成的相应头文件和源文件。我正在把这些文件编译在一起。@ TeTNA:发布的错误信息看起来仍然是试图用C++编译器编译“abc”。如果您已经有了yacc输出,您可能应该确保这些文件包含在项目中,并从项目中删除abc.y。实际上,我也删除了这些文件。我正在尝试。我得到了同样的错误。@aschepler可能是从abc.y生成abc.c,而c文件中有#行指令,这些指令引用了abc.y