C99는 얼마나 일반적으로 지원됩니까?
C99 표준은 현재 컴파일러에서 얼마나 일반적으로 지원됩니까?저는 GCC조차 그것을 완전히 지원하지 않는 것을 알고 있습니다.이게 맞나
C99의 어떤 기능이 다른 기능보다 더 지원됩니까? 즉, 어떤 기능을 사용하여 대부분의 컴파일러가 나를 이해할 수 있는지 확인할 수 있는 기능은 무엇입니까?
휴대용 C 코드를 쓰고 싶다면 C89(구 ANSI C 규격)로 쓰는 것이 좋습니다.이 표준은 대부분의 컴파일러에서 지원됩니다.
인텔 C 컴파일러는 C99를 매우 잘 지원하며 고속 바이너리를 생성합니다.(0x69 감사합니다!)
MSVC는 몇 가지 새로운 기능을 지원하며 Microsoft는 향후 버전에서 지원을 확대할 계획입니다.
GCC는 C99의 새로운 기능을 지원합니다.그들은 C99 기능의 상태에 대한 표를 만들었다.C99의 가장 사용 가능한 기능은 가변 길이 배열이며, 현재 GCC는 이를 지원합니다.Clang(LLVM의 C 프런트)은 부동소수점 플러그마를 제외한 대부분의 기능을 지원합니다.
위키피디아에는 컴파일러의 C99 지원에 대한 훌륭한 요약이 있는 것 같습니다.
인텔 컴파일러는 C99를 지원한다고 합니다.C99를 완전히 지원하는 Comau C/C++ 컴파일러도 있습니다.제가 아는 건 이것뿐이에요
C99 기능은 잘 지원되지 않기 때문에 사용하지 않습니다.
- 가변 길이 배열
- 다양한 파라미터 수를 가진 매크로.
Microsoft 이외에서는, 자주 사용하고 있는 C99 의 기능은, 꽤 서포트되고 있는 것 같습니다.
stdint.h
snprintf()
(MS는 비표준입니다)._snprintf()
버퍼를 항상 null로 종료하지 않고 버퍼의 크기를 나타내지 않는 심각한 제한이 있습니다.
Microsoft의 비지원 문제를 해결하기 위해 MinGW의 퍼블릭 도메인(VC6에서도 작동하도록 수정)과 Holger Weiss의 거의 퍼블릭 도메인을 사용합니다.
Microsoft 에서는 지원되지 않지만 프로젝트에 따라서는 다른 컴파일러에서도 사용할 수 있는 항목은 다음과 같습니다.
- 혼재 선언과 코드
- 인라인 함수
_Pragma()
- 이로 인해 프래그마가 훨씬 더 유용하게 사용 가능
gcc의 경우 지원되는 모든 기능을 포함하는 테이블이 있습니다.가장 큰 누락은 가변 길이 어레이인 것 같습니다.그 밖에 부족한 기능의 대부분은 언어 기능보다는 라이브러리의 문제입니다.
IBM c 컴파일러는 c99로 호출할 때는 c99를 지원하지만 cc 또는 xlc로 호출할 때는 지원하지 않습니다.
현재 지원되는 기능에 대한 자세한 내용은 GNU의 C99 suport 상태를 참조하십시오.
Sun Studio는 C99 사양 전체를 지원하는 것으로 알려져 있습니다.사용한 적이 없기 때문에 확인할 수 없습니다.
Microsoft 컴파일러가 C99 스펙 전체를 지원하는 것은 아니라고 생각합니다.현시점에서는 C++에 훨씬 더 중점을 두고 있습니다.
Microsoft는 C++ 표준을 추적하고 있는 것처럼 보이지만 C99는 지원하지 않습니다(일부 기능은 선택하지만 중복되는 C++0x는 선택 가능합니다).
Visual Studio의 경우.NET 2003, 새로운 프로젝트에서는 'C 코드를 C++(/TP)로 컴파일' 옵션이 기본적으로 활성화되어 있습니다.
Clang(LLVM 기반 C 및 C++ 컴파일러)은 C99를 상당히 잘 지원합니다.나는 그것이 지원하지 않는 유일한 것은 부동소수점 프래그마라고 생각한다.
언급URL : https://stackoverflow.com/questions/139479/how-universally-is-c99-supported
'itsource' 카테고리의 다른 글
Javascript : 자연스러운 영숫자 문자열 (0) | 2022.09.25 |
---|---|
실행 중인 Python 스크립트의 경로를 얻으려면 어떻게 해야 합니까? (0) | 2022.09.25 |
해시 '#'이 없는 AngularJS 라우팅 (0) | 2022.09.25 |
판다는 머리털이 없는 테이블에서 책을 읽는다. (0) | 2022.09.25 |
mysqli_builen_array()는 파라미터 1이 mysqli_result(부울값)이 될 것으로 예상합니다. (0) | 2022.09.25 |