C99
From cppreference.net
<
c
ISO/IEC 9899:1999 , 일명 C99 , 는 C 표준의 이전 개정판입니다.
|
이 섹션은 불완전합니다
이유: 핵심/라이브러리 기능, TC1~TC3, DRs |
목차 |
새로운 언어 기능
- 식별자의 유니버설 문자 이름
- 증가된 번역 한계
- // 주석
- restrict 포인터
-
향상된
산술 타입
- _Bool
- long long 및 unsigned long long
- 확장 정수 타입
- _Complex 타입 ( float _Complex , double _Complex , 및 long double _Complex )
- _Imaginary 타입 ( float _Imaginary , double _Imaginary , 및 long double _Imaginary )
- 유연한 배열 멤버
- 가변 길이 배열 (VLA) 타입 및 가변 수정 (VM) 타입
-
중괄호 초기화 리스트
개선:
배열
,
구조체 및 공용체
타입
- 비상수 초기화
- 지정 초기화
- 멱등 cvr 한정자
- 열거자 목록 의 후행 쉼표
- 16진수 부동 소수점 상수
- 복합 리터럴
- 부동 소수점 환경
- 부호 있는 정수 타입 나눗셈에 대한 절단 요구
-
main()함수 에서의 암시적 return 0 ; - 혼합 순서의 선언과 문
- for 루프의 초기화 문
- inline 함수
- 미리 정의된 변수 __func__
- 함수 선언 내 [ ] 에서의 cvr 한정자 및 static
- 가변 매크로
- _Pragma 전처리기 연산자
-
부동 소수점 평가를 위한 표준 프라그마
-
STDCFENV_ACCESS -
STDCFP_CONTRACT -
STDCCX_LIMITED_RANGE
-
선택적 기능을 위한 기능 테스트 매크로
-
__STDC_IEC_559__
- IEEE-754 이진 부동소수점 연산과 필수 수학 함수가 지원됨을 나타냅니다.
-
__STDC_IEC_559_COMPLEX__
- IEEE-754 복소수 연산과 필수 수학 함수가 지원됨을 나타냅니다.
-
__STDC_HOSTED__
- 구현이 호스팅 환경 임을 나타냅니다.
-
__STDC_ISO_10646__
- 와이드 리터럴 인코딩에 유니코드가 사용되며, 지원되는 최신 개정판으로 확장됨을 나타냅니다.
-
__STDC_MB_MIGHT_NEQ_WC__
- 기본 문자 집합에 속한 일부 문자가 일반 및 와이드 리터럴 인코딩 에서 서로 다른 코드 단위 값을 가질 수 있음을 나타냅니다.
새로운 라이브러리 기능
새로운 헤더
라이브러리 기능
- 정수형 별칭
- long long 및 intmax_t 연산
- 부동소수점 환경 접근
-
확장 부동소수점 수학 함수
- 새로운 부동소수점 수학 함수
-
-
f및 -l변형 (기존 및 새로운 부동소수점 수학 함수용) - 수학 오류 처리
- 복소수 함수
- _Exit()
- long long , unsigned long long , intmax_t , 및 uintmax_t 형식 지원
- isblank() 및 iswblank()
- snprintf() 및 vsnprintf()
- vfscanf() 및 vfwscanf() 함수 계열
- fscanf() 및 fprintf() 함수 계열 확장
- long long 및 unsigned long long 숫자 한계 매크로
- 기존 및 새로운 정수형 별칭에 대응하는 숫자 한계 매크로
- 정수형 형식 문자열 매크로
- va_copy
- 일반형 수학 매크로
- 부동소수점 비교 매크로
- 부동소수점 분류 매크로
- _Bool 호환성 매크로 ( bool , true , 및 false )
폐기된 기능
제거된 기능
- 암시적 int 선언
- 암시적 함수 선언
사용 중단된 기능
결함 보고서
Template:c/language/history/DR99
컴파일러 지원
C99 핵심 언어 기능
|
이 섹션은 불완전합니다
이유: C 컴파일러 목록, 검증 필요 |
|
C99 기능
|
문서
|
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
| 식별자의 유니버설 문자 이름 | 3.1 | Yes | Yes | ||||||||
| 증가된 번역 제한 | N590 | 0.9 | N/A | ||||||||
| // 주석 | N644 | 2.7 | 지원 | 지원 | |||||||
| restrict 포인터 | N448 | 2.95 | 지원 | 부분적 * | |||||||
| 향상된 산술 타입 |
N815
N601 N620 N638 N657 N694 N809 |
예 | 부분적 | 가능성 있음 | |||||||
| 플렉서블 배열 멤버 | 3.0 | 예 | 예 | ||||||||
| 가변 길이 배열 (VLA) 타입 | N683 | 0.9 | 예 | ||||||||
| 가변 수정 (VM) 타입 | N2778 | N/A | 지원 | ||||||||
| 지정 이니셜라이저 | N494 | 3.0 | 예 | 예 | |||||||
| 비상수 이니셜라이저 | 1.21 | N/A | |||||||||
| 멱등성 cvr 한정자 | N505 | 3.0 | N/A | ||||||||
| 열거자 목록의 후행 쉼표 enumerator-list | 0.9 | Yes | Yes | ||||||||
| 16진수 부동 소수점 상수 | N308 | 2.8 | 지원 | 지원 | |||||||
| 복합 리터럴 | N716 | 3.1 | 예 | 예 | |||||||
| 부동 소수점 환경 | partial | partial | |||||||||
| 부호 있는 정수형 나눗셈에 대한 절사 요구 | N617 | 0.9 | N/A | ||||||||
암시적
return
0
;
in the
main()
function
|
Yes | Yes | Yes | ||||||||
| 혼합된 순서의 선언과 문 | N740 | 3.0 | Yes | Yes | |||||||
| init-statement in for 루프 | Yes | Yes | Yes | ||||||||
| inline 함수 | N741 | 4.3 | 지원 | 지원 | |||||||
| 미리 정의된 변수 __func__ | N611 | 2.95 | 지원 | 지원 | |||||||
| Cvr-qualifiers와 static in [ ] 함수 선언 내에서 | 3.1 | Yes | |||||||||
| 가변 인자 매크로 | N707 | 2.95 | 지원 | 지원 | |||||||
| _Pragma 전처리기 연산자 | N634 | 3.0 | 지원 | 부분적 * | |||||||
| 부동 소수점 평가를 위한 표준 프라그마 |
N631
N696 |
아니오 | 아니오 | ||||||||
|
C99 기능 |
논문 |
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|