source

GNU99와 C99(Clang)의 차이점은 무엇입니까?

goodcode 2022. 8. 1. 22:43
반응형

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

반응형