찾다

 >  Q&A  >  본문

nginx - C 언어, vc 컴파일러 cl, 함수 시작 부분에서 변수를 선언하지 않고도 변수를 지원하는 방법

Windows에서 vc 컴파일러 cl.exe를 사용하여 nginx의 타사 모듈을 컴파일하면 다음과 유사한 오류 코드가 보고됩니다.

으아악

오류는 ngx_int_t variable_header_status = NGX_OK;:

으아악

확인해 본 결과, C 컴파일러에서는 변수 선언을 함수 블록의 선두에 배치하도록 요구하지만 C++에는 그러한 요구 사항이 없습니다. 함수 시작 부분에 세 개의 선언된 변수를 넣기만 하면 됩니다.

동일한 코드를 gcc에서 컴파일하고 전달할 수 있습니다.

VC에 고급 C를 지원할 수 있는 컴파일 옵션이 있는지 알려주세요. 내가 사용하는 vc 컴파일러는 이미 vs2012

와 함께 제공되는 컴파일러입니다.
淡淡烟草味淡淡烟草味2782일 전1009

모든 응답(3)나는 대답할 것이다

  • 为情所困

    为情所困2017-05-16 17:28:29

    말도 안돼.
    VC는 최신 2013에서도 C89 표준을 지원하기 때문에 본질적으로 C++ 컴파일러이기 때문에 필요한 구문은 C99 표준 이후에만 지원되므로 GCC가 컴파일하고 통과할 수 있습니다.

    두 가지 솔루션이 있습니다:
    하나는 C89 표준을 준수하도록 코드를 변경하는 것입니다.
    2. mingw

    를 사용하여 컴파일

    회신하다
    0
  • 怪我咯

    怪我咯2017-05-16 17:28:29

    컴파일 명령에

    을 추가합니다.

    -c99

    회신하다
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 17:28:29

    Visual Studio 2012는 C99를 지원하지 않지만 Visual Studio 2013은 지원합니다.
    참조: C99 위키피디아

    회신하다
    0
  • 취소회신하다