2011-07-06 140 views
0

我正在使用Visual Studio 2010構建C項目。我的項目包含許多頭文件,源文件和解析器。它使用lexbason文件。我在編譯過程中得到一個錯誤,即以下Visual C++編譯錯誤

abc.y:error C2065: 'INPUT' : undeclared identifier 

我想我越來越喜歡,包括

#define WIN32_WINNT >= 0x0501 
在我的main.c文件

包含任何頭文件之前的解決方案files.I無法擺脫這個錯誤。你能不能讓我知道可能是這個錯誤的原因?

編輯

的代碼片段,是顯示錯誤是:

 list_Cons(0, list_List((POINTER)INPUT) 

令人驚訝的是,如果我改變輸入INPUT1,我得到了同樣的錯誤。改變是堅忍不拔的。

+0

這是你在找什麼? http://support.microsoft.com/kb/892073。沒有看到代碼就無法分辨出更多。 – BlackJack

+0

失敗的線路來自哪裏?它是否在'yacc'生成的文件中?在這種情況下,您必須諮詢yacc的手冊。 – Vlad

+0

INPUT從哪裏來? – Rudi

回答

0

C++編譯器無法處理* .y文件。爲此,您需要一個yacc/bison程序,它不包含在Visual Studio 2010中。

+0

我不認爲VS2010有一個關於如何編譯'* .y'的內置規則,所以這個問題必須在別的地方。 – Vlad

+0

我已經使用lex和bison生成了yaac和lex文件生成的相應頭文件和源文件。我正在編譯這些文件。 – thetna

+0

@thetna:發佈的錯誤消息仍然看起來像是試圖用C++編譯器編譯「abc.y」。如果你已經有了yacc輸出,你應該確保這些文件包含在項目中,並從項目中移除abc.y。 – aschepler

2

想必您閱讀thisthis

#define WIN32_WINNT >= 0x0501不會工作。您應該嘗試使用#define WIN32_WINNT 0x0501

另外,檢查你實際上是#包括WINUSER.H

0

至於我自己,我用CMake它可以產生MSVC項目與其他構建類型一起。你可以告訴它一個.y needs to be processed超出了C/C++文件,它將指示MSVC調用預處理非C/C++部分所需的任何外部工具。