필자는 주로 Microsoft 때문에 의사 C89 코드 (완전 C99 호환 아님)를 작성하고 있음을 인정해야합니다. 나는 Windows 측의 MSVC에 크게 의존하고 있으며 C99와 완전히 호환되지 않고 대신 C ++ 17 이상에 중점을 둡니다.
그 외에도 많은 플러그인 개발자가 플러그인 개발을 위해 MSVC를 사용하고 일부는 MSVC 2010을 사용하는 C SDK를 개발 중입니다. 그래서 여전히 인기가 많은 컴파일러가 플랫폼에서 널리 사용되지 않습니다. 아직 C99를 완전히 구현하지 않은 Windows exotic). 가장 큰 범위의 컴파일러 (C ++이 아닌 C로 작성된 주요 이유 중 하나)와의 광범위한 호환성을 목표로 할 때 여전히 많은 사람들이 사용하고 있습니다 (적어도 MSVC). C 지원에 관해서. C99 이후 거의 수십 년이 지났으며 MSVC AFAIK와 같이 VLA가 아직 없습니다 (MSVC 2017에서는 아직 확인하지 않았지만 C에 대한 Microsoft의 입장에서는 C99와 훨씬 더 호환됩니다) .
따라서 불행히도 여전히 완전히 C99 호환되지 않는 우수한 옵티 마이저 및 디버거로 실제로 매우 우수한 새로운 컴파일러가 있습니다. 물론 이것이 아니라면 C11을 뛰어 넘을 것입니다.
플러그인 및 MSVC와의 소스 호환성 외에도 다른 언어와의 상호 운용성이 있습니다. 일부 다른 언어는 FFI를 통해 SDK를 사용하며 일부 FFI는 C89 만 이해합니다. dylib에서 함수를 가져올 때 이해하지 못 bool
하거나 _Bool
간단한 예일 수 있습니다 int
.
그렇습니다. 이식성에 대한 주장은 사실이지만 문제는 실제로 C89 컴파일러 만 사용할 수 있지만 새로운 소프트웨어 배포판을 컴파일하는 비가 설적 시스템이 있는지에 대한 것입니다. 즉, 새 C 프로젝트를 시작하는 경우 C89를 준수하면 잠재 사용자 수가 증가 할 수 있는지 어떻게 알 수 있습니까?
방금이 하나이지만 에코 Blrfl
가 발생했습니다 .C99와 C11을 사용하면 생산성이 크게 향상되지 않지만 사람들이 MSVC에서 플러그인을 작성할 수있는 기능을 잃는 것은 막대한 비용이 될 수 있습니다 (특히 내가 일하는 제품 이후) on은 Windows 측면에서 시장 점유율이 가장 높으며 평균 사용자는 종종 많은 타사 플러그인을 구매하고 다운로드합니다. 내가 작업하는 제품의 종류는 프로그래머 / 스크립트 작성자를위한 개발 환경과 아티스트를위한 사용자 엔드 제품 사이의 거의 절반에 지나지 않습니다. 많은 사람들이 새로운 기능을 허용하고 새로운 기능을 허용하기 위해 그 위에 새로운 것을 개발하기를 원하기 때문입니다. 친절한 사람들은 아직 보지 못했습니다. 제 경우에는 실제로 SDK에 대해 C89를 선호하는 것은 매우 간단한 결정이었습니다.
주변 컴파일러를 살펴보고 대상 인구 통계를 파악하려고한다고 가정합니다. Windows 용 플러그인 아키텍처를 개발하지 않거나 임베디드 프로그래밍을 수행하지 않거나 가장 광범위한 컴파일러 및 언어에서 사용할 수있는 소프트웨어 개발 키트를 작성하려는 경우 C99 +에 쉽게 도달 할 수 있습니다. 떨어져. 또한 C99 양식을 얼마나 많이 생산성 향상시킬 수 있는지 생각해보십시오. 데이터가 맞을 때 스택을 사용하고 그렇지 않으면 힙을 사용할 수있는 간단한 방법에 의존하기 때문에 VLA와 같은 이점은별로 없습니다.
그러나 MSVC와 같은 인기있는 컴파일러에서 다른 언어의 FFI에 이르기까지 많은 것들이 있습니다. 다른 언어에서는 dylib에서 직접 C 함수를 가져오고 호출 할 수 있다는 의미에서 시원하지만 조금 뒤에있을 수도 있습니다. 타임스. 따라서 도메인에 따라 단순히 오래된 미학을 선호하고 어떤 종류의 미학을 선호하는 것보다 훨씬 더 실용적인 비즈니스 사항이 있습니다.