반응형
GNU99와 C99(Clang)의 차이점은 무엇입니까?
컴파일러 옵션 GNU99와 C99를 보았습니다.뭐가 다른데요?상세 매뉴얼이 있습니까? (Clang, Xcode, Mac OS X)
다양한 표준 모드의 차이
clang은 -std 옵션을 지원합니다.이 옵션은 clang 언어 모드의 사용을 변경합니다.C에서 지원되는 모드는 c89, gnu89, c94, c99, gnu99 및 이러한 모드의 다양한 에일리어스입니다.-std 옵션을 지정하지 않으면 clang은 기본적으로 gnu99 모드가 됩니다.
모든 c* 모드와 gnu* 모드의 차이:
- c* 모드는
__STRICT_ANSI__
.- "linux"와 같이 밑줄이 붙지 않는 타겟 고유의 정의는 gnu* 모드로 정의됩니다.
- Trigraphs는 기본적으로 gnu* 모드에서 꺼집니다.이러한 기능은,
-trigraphs
선택.- 파서는 "asm"과 "typeof"를 gnu* 모드에서 키워드로 인식합니다.
__asm__
그리고.__typeof__
는 모든 모드에서 인식됩니다.- Apple의 「블록」확장은, 일부의 플랫폼에서는 디폴트로 gnu* 모드로 인식됩니다.이 확장 기능은, 임의의 모드로 유효하게 할 수 있습니다.
-fblocks
선택.
기타 링크
C99는 스트레이트 C99, GNU99는 확장자를 가진 C99입니다.GCC의 manpage를 참조해 주세요.
C99는 우리가 모두 알고 있듯이 1999년 현재 C 표준의 버전입니다.GCC에서는 완전히 지원되지 않습니다.
GNU99는 GNU98이 C98의 확장인 것처럼 C99의 확장입니다.문서에서:
ISO C99 및 GNU 확장 기능ISO C99 가 GCC 에 완전하게 실장되면, 이것이 디폴트가 됩니다.gnu9x라는 이름은 더 이상 사용되지 않습니다.
Clang은 이러한 확장도 지원합니다.
언급URL : https://stackoverflow.com/questions/5313536/whats-the-difference-between-gnu99-and-c99-clang
반응형
'source' 카테고리의 다른 글
Vue.js - Ajax 호출에서 컴포넌트를 로드합니다. (0) | 2022.08.01 |
---|---|
vuejs3/vee-validate 4 app get vuex object의 제출 방법은 어떻게 됩니까? (0) | 2022.08.01 |
Vue.js를 사용하여 소품을 기반으로 한 요소에 여러 클래스를 추가하려면 어떻게 해야 합니까? (0) | 2022.08.01 |
대형 프로젝트에서 선호하는 C/C++ 헤더 정책은 무엇입니까? (0) | 2022.07.31 |
Eclipse의 Import된 Maven 프로젝트가 기본적으로 Java 1.6 대신 Java 1.5를 사용하는 이유는 무엇이며, 어떻게 하면 그렇지 않은지 확인할 수 있습니까? (0) | 2022.07.31 |