2013-02-25 2 views
0

다소 오래된 코드베이스로 작업하고 있으며 모두 C99 이전입니다. 따라서 bool 유형이 아니라 BOOLEAN 열거 형입니다. 나는 젊은 총이다. 그래서 VS 2010을 좋아하지만, 오래된 코드베이스에서 특히 잘 돌아 가지 않는다. MSVC2010을 사용하여 인라인 오류 강조 표시를하고있는 것 같아요. MSVC2010이 C99 표준 을 따르고 있습니다. 나는 이것에 대해 잘못 될 수 있지만, 어떤 경우 든, BOOLEAN 변수에 부울 표현식을 할당하면 "오류"가 강조됩니다. 의 =에 오류가 강조 될 것 VS2010 편집기에서Visual Studio 2010에서 C99 이전 구문 사용

typedef enum boolean_tag {FALSE, TRUE} BOOLEAN; 
BOOLEAN test = FALSE; 
test = 1 == 1; 

, 그리고 마우스 커서를 가져다 대면 형 bool의 값이 유형 BOOLEAN의 기관에 할당 할 수 없음을주의 할 것이다 : 나는 간단한 예를 줄 것이다. pre-C99에는 bool의 개념이 없으므로이 값은 단순히 enum 값을 할당해야하므로 오류가 아닙니다.

그래서 제 질문은 VS2010에 사전 C99 구문/오류 검사를 사용하도록 지시하는 방법이 있습니까? 또는 다른 방법으로, 그리고 이것은 스트레치입니다.이 함수를 위해 또 다른 컴파일러를 사용합니까?

감사합니다.

편집 : 수정 MSVC2010 가정 몇 가지 고려해야 할

+0

편집기에서 이것을 오류로 알리는 경우에도 컴파일합니까? 편집기는 실제 컴파일러보다 _different_ 파서를 사용합니다. –

+2

Windows API는'#define TRUE 1'을 사용합니다. 어쩌면 그 코드 하이 라이터가 어지럽습니까? 나는 MSVC에서 C 코드를 읽을 때 가장 높은'= '기호를 무시하는 법을 배웠다. –

+2

Microsoft 컴파일러는 C99을 지원하지 않으므로 Microsoft는 C99를 변경할 의도가 없음을 분명히했습니다. VS가 C++ 모드를 사용하고있는 것처럼 보입니다. –

답변

3

:

  • 비주얼 스튜디오는 C++ 컴파일러와 엄격하게 준수하는 C 프로그램을 컴파일 때문에 적합하지 않습니다.
  • Visual Studio는 C 표준의 모든 버전과 잘 일치하지 않습니다. 확실히 C99 표준을 따르지 않거나 구현하지 않습니다.
  • C++에서 표현 1 == 1booltrue으로 평가됩니다.
  • C에서 표준의 모든 버전 1 == 1int 인 값 1으로 평가됩니다.

Visual Studio는 열거 형에 bool을 저장하려고 시도하기 때문에 불만을 토로합니다. 이는 강력한 입력이있는 언어 인 C++에서는 좋지 않습니다. C 언어에는 이러한 제한이 없습니다.

질문에 대한 답은 다음과 같습니다. 다른 프로그래밍 언어 용 컴파일러에서 C 프로그램을 컴파일하려고하기 때문에 이러한 문제가 발생합니다.

+0

그래, 알 겠어.하지만 파일을 C로 처리하는 방법은 없나요? 경우에 따라 파일을 처리해야합니까? 또한 실제 컴파일은 gcc, my 문제는 VS –

+0

의 텍스트 편집기로 제한되어 있습니까 아니면 오류 강조 표시에 대한 사용자 정의 규칙을 만드는 방법이 있습니까? –

+0

@ cjm571 IDE의 소스 강조 표시 이외의 이유로 Visual Studio를 사용하는 이유가 있습니까? RAD 기능을 사용하려면 대신 실제 C 컴파일러를 사용하는 것이 좋습니다 (예 : GCC/Mingw). 아마도 Visual Studio 만 프로젝트 IDE로 유지하십시오. – Lundin

관련 문제