Windows에서 vc 컴파일러 cl.exe를 사용하여 nginx의 타사 모듈을 컴파일하면 다음과 유사한 오류 코드가 보고됩니다.
으아악오류는 ngx_int_t variable_header_status = NGX_OK;
:
확인해 본 결과, C 컴파일러에서는 변수 선언을 함수 블록의 선두에 배치하도록 요구하지만 C++에는 그러한 요구 사항이 없습니다. 함수 시작 부분에 세 개의 선언된 변수를 넣기만 하면 됩니다.
동일한 코드를 gcc에서 컴파일하고 전달할 수 있습니다.
VC에 고급 C를 지원할 수 있는 컴파일 옵션이 있는지 알려주세요. 내가 사용하는 vc 컴파일러는 이미 vs2012
와 함께 제공되는 컴파일러입니다.
말도 안돼.
VC는 최신 2013에서도 C89 표준을 지원하기 때문에 본질적으로 C++ 컴파일러이기 때문에 필요한 구문은 C99 표준 이후에만 지원되므로 GCC가 컴파일하고 통과할 수 있습니다.
두 가지 솔루션이 있습니다:
를 사용하여 컴파일하나는 C89 표준을 준수하도록 코드를 변경하는 것입니다.
2. mingw
컴파일 명령에
을 추가합니다.-c99
Visual Studio 2012는 C99를 지원하지 않지만 Visual Studio 2013은 지원합니다.
참조: C99 위키피디아