2011-07-06 8 views
0

저는 C 프로젝트를 빌드하기 위해 Visual Studio 2010을 사용하고 있습니다. 내 프로젝트에는 여러 헤더 파일, 소스 파일 및 파서가 포함되어 있습니다. 그것은 lexbason 파일을 사용합니다. 나는 컴파일시 하나의 오류가 발생하고, 즉 오전 내가 헤더의 어떤을 포함하기 전에 내 main.c에 파일Visual C++에서 컴파일 오류가 발생했습니다.

#define WIN32_WINNT >= 0x0501 

을 포함처럼 무엇입니까 솔루션을 시도

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

다음 이 오류를 제거 할 수 없습니다. 이 오류의 원인이 될 수 있습니까?

편집

오류를 보여주는 것은 코드의 조각 :

 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 파일을 처리 할 수 ​​없습니다. 이를 위해서는 Visual Studio 2010에 포함되어 있지 않은 yacc/bison 프로그램이 필요합니다.

+0

VS2010에는 '* .y' 컴파일 방법에 대한 기본 규칙이 없으므로 문제가 다른 곳에서 발생해야합니다. – Vlad

+0

yaac과 lex 파일이 lex와 bison을 사용하여 생성하는 해당 헤더와 소스 파일을 생성했습니다. 그리고 나는 그 파일들을 함께 컴파일하고있다. – thetna

+0

@thetna : 게시 된 오류 메시지는 여전히 C++ 컴파일러로 "abc.y"를 컴파일하려고하는 것처럼 보입니다. 이미 yacc 출력을 가지고 있다면 아마도 그 파일들이 프로젝트에 포함되어 있는지 확인하고 프로젝트에서 abc.y를 제거해야합니다. – aschepler

2

아마도 thisthis을 읽었을 것입니다.

#define WIN32_WINNT >= 0x0501 실 거예요. 대신 #define WIN32_WINNT 0x0501을 사용해보세요.

또한, 당신이 실제로 자신을 위해

0

winuser.h으로 #include 있는지 확인 본인은 빌드 유형과 함께 MSVC 프로젝트를 생성 할 수 있습니다 CMake을 사용합니다. .y needs to be processed이 C/C++ 파일을 넘어서고, C/C++가 아닌 부분을 전처리하는 데 필요한 외부 도구를 호출하도록 MSVC에 지시합니다.

관련 문제