C99
C99이것은 _Pragma(), FP_CONTRACT, CX_LIMITED_에 대한 정보가 없습니다.RANGE이하려면 를 하십시오.(2020년 11월) |
| C 언어 리비전 |
|---|
C99(이전의 C9X)는 ISO/IEC 9899:1999의 비공식 명칭으로, C 프로그래밍 언어 [1]표준의 과거 버전입니다.이전 버전(C90)을 언어와 표준 라이브러리의 신기능으로 확장하여 IEEE 754-1985 부동소수점 연산 및 컴파일러 [2]테크놀로지 등의 사용 가능한 컴퓨터 하드웨어를 효율적으로 사용할 수 있도록 지원합니다.2011년에 발표된 C 프로그래밍 언어 표준의 C11 버전은 C99를 대체합니다.
역사
ANSI가 1989년에 C 프로그래밍 언어에 대한 공식 표준을 만든 후, 1990년에 국제 표준이 된 후, C 언어 사양은 한동안 비교적 정적인 상태를 유지한 반면, C++는 주로 자체 표준화 노력 동안 계속 발전하였다.규범 수정안 1은 1995년에 C에 대한 새로운 표준을 만들었지만, 1989년 표준의 일부 세부사항을 수정하고 국제 문자 집합에 대한 광범위한 지원을 추가하기 위해서였다.이 표준은 1990년대 후반에 추가 개정을 거쳐 1999년에 ISO/IEC 9899:1999를 발표하였고, 2000년 5월에 ANSI 표준으로 채택되었다.해당 버전의 표준에서 정의한 언어를 일반적으로 "C99"라고 합니다.국제 C 표준은 작업 그룹 ISO/IEC JTC1/SC22/WG14에 의해 유지됩니다.
설계.
C99는 대부분의 경우 C89와 하위 호환성이 있지만 어떤 [3]면에서는 더 엄격합니다.
특히, 유형 지정자가 없는 선언은 더 이상 다음을 가지지 않습니다.int암묵적으로 가정하다C 표준 위원회는 컴파일러가 암묵적으로 의존하는 레거시 코드를 묵묵히 처리하는 것보다 유형 지정자의 의도치 않은 누락 여부를 진단하는 것이 더 가치 있다고 결정했다.int실제로 컴파일러는 경고를 표시하고 나서int프로그램 번역을 계속합니다.
C99는 몇 가지 새로운 기능을 도입했습니다.그 중 많은 기능은 이미 여러 [4]컴파일러에서 확장으로 구현되어 있었습니다.
- 인라인 함수
- 선언과 코드가 혼재된 경우: 변수 선언이 파일 범위 또는 복합문 시작(블록)으로 제한되지 않습니다.
- 다음과 같은 몇 가지 새로운 데이터 유형
long long int, 옵션의 확장 정수형, 명시적 부울 데이터형 및complex복소수를 나타내기 위해 타이핑하다 - 가변장 어레이(이후 C11에서는 구현이 지원하지 않아도 되는 조건부 기능으로 제한됨)
- 유연한 어레이 멤버
- 로 시작하는 한 줄짜리 코멘트 지원
//BCPL, C++ 및 Java와 같이 - 새로운 라이브러리 기능(예:
snprintf - 새로운 헤더(예:
<stdbool.h>,<complex.h>,<tgmath.h>,그리고.<inttypes.h> - 유형 변환 산술(수치) 함수, 입력
<tgmath.h>를 기반으로 산술 라이브러리 함수를 선택합니다.float,double, 또는long double의론 등 - IEEE 부동소수점 지원 향상
- 지정된 이니셜라이저(예를 들어 필드 이름으로 구조체를 초기화함)
struct point p = { .x = 1, .y = 2 };) [5]。 - 복합 리터럴(예를 들어 함수 호출에서 구조를 구성할 수 있습니다.
function((struct x) {1, 2})) [6]。 - variadic 매크로 지원(변수 인수로 표시)
restrict인정에 의해, ANSI[7] C에 비해 FORTRAN이 가지고 있던 컴파일 타임 어레이 액세스의 메리트가 배제되어 보다 적극적인 코드 최적화가 가능하게 됩니다.- 범용 문자 이름: 사용자 변수에 표준 문자 집합 이외의 문자를 포함할 수 있습니다.
- 키워드
static매개 변수 선언의[8] 배열 색인에서
C99 표준의 일부는 정수형, 헤더 및 라이브러리 함수를 포함하여 C++ 표준의 현재 버전에 포함되어 있습니다.C++의 Standard Template Library에는 이미 유사한 기능이 포함되어 있기 때문에 가변 길이 배열은 포함되어 있지 않습니다.
IEEE 754 부동소수점 지원
C99의 주요 특징은 숫자 지원이며, 특히 최신 프로세서('Annex F IEC 60559'에서 정의)의 대부분에 존재하는 IEEE 754-1985(IEC 60559) 부동소수점 하드웨어의 기능에 대한 접근을 지원합니다.IEEE 754 하드웨어가 없는 플랫폼에서도 소프트웨어로 [2]구현할 수 있습니다.
IEEE 754 부동소수점 플랫폼:
floatIEEE 754 단일 정밀도로 정의됩니다.double이중 정밀도로 정의됩니다.long double는 IEEE 754 확장 정밀도(x86 또는 x86-64 플랫폼에서의 인텔 80비트 배 확장 정밀도 등) 또는 사용 가능한 경우 쿼드 정밀도의 형태로 정의됩니다.그렇지 않으면 배 정밀도가 됩니다.- 4개의 산술연산과 제곱근은 IEEE 754에서 정의된 대로 올바르게 반올림됩니다.
FLT_EVAL_Method 흘러가다 더블 롱 더블 0 흘러가다 더블 롱 더블 1 더블 더블 롱 더블 2 롱 더블 롱 더블 롱 더블 - 식 평가는 다음 세 가지 정의된 방법 중 하나로 수행되도록 정의되며, 부동소수점 변수가 식에서 먼저 보다 정확한 형식으로 승격되는지 여부를 나타냅니다.
FLT_EVAL_METHOD == 2모든 내부 중간 계산이 가능한 경우 기본적으로 고정밀(긴 이중)로 수행됨을 나타냅니다(예: 80비트 이중 확장).FLT_EVAL_METHOD == 1는 (오퍼랜드가 긴 더블이 아닌 한) 모든 내부 중간 표현을 2배의 정밀도로 수행합니다.FLT_EVAL_METHOD == 0는 각 오퍼레이터의 가장 넓은 피연산자의 정밀도로만 각 오퍼레이션을 평가하도록 지정합니다.특정 정밀도의 오퍼랜드에 대한 중간 결과 유형이 인접 표에 요약되어 있습니다.
FLT_EVAL_METHOD == 2수치적으로 불안정한 표현에 영향을 미치는 반올림 오류의 위험을 제한하는 경향이 있으며(IEEE 754 설계 근거 참조), x87 하드웨어에 대해 설계된 기본 방법이지만 부주의한 [9]사용자에게 의도하지 않은 행동을 일으킨다. FLT_EVAL_METHOD == 1원래 K&R C에서 사용된 기본 평가 방법으로, 모든 플로트를 두 배로 표현하도록 촉진했다.FLT_EVAL_METHOD == 0또한 일반적으로 사용되며 오퍼랜드의 엄밀한 "evaluate to type"을 지정합니다(gcc의 경우,FLT_EVAL_METHOD == 2는 32비트 x86 디폴트입니다.FLT_EVAL_METHOD == 0는 64비트 x86-64의 디폴트입니다만,FLT_EVAL_METHOD == 2옵션 -mfpmath=387을 사용하여 x86-64로 지정할 수 있습니다.)C99 이전에는 컴파일러가 특히 x87 부동소수점 하드웨어를 사용하는 경우 중간 결과를 반올림하여 컴파일러 고유의 [10]동작을 일으킬 수 있었습니다.이러한 불일치는 C99(부속서 F)에 준거한 컴파일러에서는 허용되지 않습니다.
예
연속분율함수를 계산하기 위한 C99 코드 예시는 주요 특징을 보여줍니다.
#실패하다 <stdio.h> #실패하다 <math.h> #실패하다 <backet.h> #실패하다 <펜브.h> #실패하다 <tgmath.h> #실패하다 <stdbool.h> #실패하다 <고객명>님.h> 더블 계산_fn(더블 z) // [1] { #프라그마 STDC FENV_ACCESS ON// [2] 주장하다(FLT_EVAL_Method == 2); // [3] 한다면 (하지 않다(z)) // [4] 놓다("z는 숫자가 아닙니다."); 한다면 (이인프(z)) 놓다("z는 무한"); 긴 더블 r = 7.0 - 3.0/(z - 2.0 - 1.0/(z - 7.0 + 10.0/(z - 2.0 - 2.0/(z - 3.0)))); // [5, 6] 페클렉스(FE_DIVBYZERO); // [7] 부울 길러진 = 제외(FE_Overflow); // [8] 한다면 (길러진) 놓다('예상치 못한 오버플로'); 돌아가다 r; } 인트 주된(무효) { #ifndef __STDC_IEC_559__ 놓다("경고: __STDC_IEC_559__는 정의되어 있지 않습니다.IEEE 754 부동소수는 완전히 지원되지 않습니다."); // [9] #엔디프 #프라그마 STDC FENV_ACCESS ON #ifdef TEST_NUMERIC_STABLITY_업. 주변(FE_UPWARD); // [10] #elif TEST_NUMERIC_STABLITY_DOWN 주변(FE_DOWNWARD); #엔디프 인쇄물("%7g\n", 계산_fn(3.0)); 인쇄물("%7g\n", 계산_fn(나노)); 돌아가다 0; } 각주:
- 컴파일 대상:
gcc -std=c99 -mfpmath=387 -o test_c99_fp -lm test_c99_fp.c - IEEE 754 상태 플래그가 이 함수로 조작되기 때문에 이 #pragma는 컴파일러가 최적화할 때 이러한 테스트를 잘못 정렬하지 않도록 하기 위해 필요합니다. (Pragma는 보통 구현 정의되지만 접두사는 다음과 같습니다.
STDCC 표준에 정의되어 있습니다.) - C99는 제한된 수의 표현 평가 방법을 정의합니다. 현재의 컴파일 모드를 확인하여 코드가 작성된 가정을 충족하는지 확인할 수 있습니다.
- NaN 및 양의 무한대 또는 음의 무한대와 같은 특수 값을 테스트하고 설정할 수 있습니다.
long double는 IEEE 754 더블 익스텐션 또는 쿼드 정밀도(사용 가능한 경우)로 정의됩니다.중간 계산에 필요한 것보다 높은 정밀도를 사용하면 반올림[11] 오류를 최소화할 수 있습니다(typedef).double_t모두 휴대할 수 있는 코드에 사용할 수 있습니다.FLT_EVAL_METHODs)- 평가할 주요 기능.예를 들어 3.0과 같은 이 연속된 분수에 대한 일부 인수가 0에 의한 나눗셈 오류를 야기하는 것처럼 보이지만, 실제로는 함수는 3.0으로 잘 정의되어 있고 0에 의한 나눗셈은 유한한 결과로 이어지는 +infinity를 단순히 반환합니다: IEEE 754는 기본적으로 그러한 예외에 트랩되지 않도록 정의되어 있으며 다음과 같이 설계되어 있습니다.이 경우처럼 y는 무시될 수 있습니다.(만약
FLT_EVAL_METHOD2로 정의하면 상수를 포함한 모든 내부 계산이 긴 이중 정밀도로 수행됩니다.FLT_EVAL_METHOD는 0으로 정의되며, 추가 캐스팅과 긴 2배의 상수의 명시적 지정을 포함하여 이를 보장하기 위해 추가 주의가 필요합니다.) - 이 경우 0으로 분할된 플래그는 오류가 아니므로 나중에 사용할 수 있도록 플래그를 클리어하기 위해 간단히 해제할 수 있습니다.
- 경우에 따라서는 오버플로 등 다른 예외는 오류로 간주될 수 있습니다(그러나 실제로는 이 경우는 발생할 수 없습니다).
__STDC_IEC_559__는, 컴파일러와 C 라이브러리에 의해서 완전하게 실장되어 있는 경우에만 정의됩니다(이 매크로는 정의되어서는 안 되지만, 정의되어 있는 것에 주의해 주세요).- IEEE 754의 경우 기본 반올림 모드는 가장 가까운 반올림 모드(반올림 규칙 포함)이지만 반올림 모드를 명시적으로 + 및 - 무한대로 설정합니다(정의).
TEST_NUMERIC_STABILITY_UP(디버깅 시)를 사용하여 [12]수치불안정성을 진단할 수 있습니다.이 방법은 다음과 같은 경우에도 사용할 수 있습니다.compute_fn()는 개별적으로 컴파일된 바이너리 라이브러리의 일부입니다.그러나 함수에 따라서는 수치적 불안정성이 항상 감지되는 것은 아닙니다.
버전 검출
표준 매크로__STDC_VERSION__가치로 정의되어 있다199901LC99 지원을 사용할 수 있음을 나타냅니다.와 마찬가지로__STDC__매크로(C90용),__STDC_VERSION__C90 컴파일러와 C99 컴파일러에 대해 다른 컴파일러로 컴파일되는 코드를 기술하는 데 사용할 수 있습니다.이 예에서는, 다음과 같이 하고 있습니다.inline어느 경우든 (로 대체함으로써) 사용할 수 있습니다.static링커 오류를 피하기 위해 C90에서).
# __STDC_VERSION__>= 199901인 경우l /* 키워드 */는 "crypto"입니다. #실패하다 # 인라인 스태틱 정의 #엔디프 실장
대부분의 C 컴파일러는 C99에서 도입된 기능의 적어도 일부를 지원합니다.
지금까지 Microsoft는 Visual C++ 툴에 새로운 C기능을 실장하는 데 시간이 걸렸고, 대신 C++[13] 표준의 개발을 지원하는 데 주력했습니다.그러나 Visual C++ 2013의 도입으로 Microsoft는 C99의 제한된 서브셋을 구현하였으며, 이는 Visual C++[14] 2015에서 확장되었습니다.
| 컴파일러 | 지원 수준 | C99 호환성 상세 |
|---|---|---|
| 아콘 C/C++ | 부분적 | 공식 문서에는 라이브러리 함수의 "일부"와 함께 "대부분" 컴파일러 기능이 지원되고 있다고 기재되어 있습니다. |
| AMD x86 Open64 컴파일러 스위트 | 주로 | C99의 지원은 [15]GCC와 동일합니다. |
| cc65 | 부분적 | 플랫폼 제한(MOS Technology 6502) 때문에 C89 및 C99의 완전한 지원은 구현되지 않습니다._Complex 및 64비트 정수(긴 길이)[16]와 같은 일부 C99 유형에는 지원이 계획되어 있지 않습니다. |
| Ch | 부분적 | 주요 C99 [17]기능을 지원합니다. |
| 쨍그랑 | 주로 | C99 부동소수점 플러그마를 [18]제외한 모든 기능을 지원합니다. |
| CompCert | 주로 | 인정받은 컴파일러로, 정식으로 증명되었습니다.C99 복소수 및 VLA를 제외한 모든 기능 및 스위치 문(더프 디바이스 [19]없음)에 대한 사소한 제한 사항 지원 |
| cparser | 가득한 | C99 [20]기능을 지원합니다. |
| C++ 빌더 | 64비트 모드만. 후자는 CLANG 포크이기 때문에 [필요한 건] | |
| 디지털 Mars C/C++ 컴파일러 | 부분적 | <tgmath>와 같은 일부 기능을 지원하지 않습니다.h> 및 _Pragma.[21] |
| GCC | 주로 | 2021년 7월[update] 현재 메인라인 GCC에서는 표준 플러그마 및 IEEE 754/IEC 60559 부동소수점 지원이 누락되어 있습니다.또한 확장 정수형이나 새로운 라이브러리 기능 등 일부 기능은 C 표준 라이브러리에서 제공되어야 하며 [22]GCC의 범위를 벗어납니다.GCC의 4.6 및 4.7 릴리스에서도 동일한 [23][24]수준의 컴플라이언스를 제공합니다.하드웨어에 준거한 경우에도 IEEE 754의 부분 지원: 일부 컴파일러 옵션은 잘못된 최적화를 방지하기 위해 필요할 수 있습니다(예:-std=c99그리고.-fsignaling-nans단, 다이렉트 반올림 모드는 다음과 같은 경우에도 완전히 지원되지 않습니다.-frounding-math사용됩니다.[25] |
| Green Hills 소프트웨어 | 가득한 | |
| IBM C for AIX, V6 및 XL C/C++ V11.1 for AIX | 가득한 | |
| IBM Rational 로그스코프 | 가득한 | Logiscope 6.3까지는 C99의 기본 구성만 지원되었습니다.C99는 Logiscope 6.4 이후 [28]버전에서 공식적으로 지원됩니다. |
| 포틀랜드 그룹 PGI C/C++ | 가득한 | |
| IAR 시스템 조립식 워크벤치 | 주로 | UCN(Universal Character Name)을 지원하지 않습니다.ARM, Coldfire, MSP430, AVR, AVR32, 8051, ...와 같은 임베디드 타깃용 컴파일러x86 타겟은 없습니다. |
| 인텔 C++ 컴파일러 | 주로 [필요한 건] | |
| Microsoft Visual C++ | 부분적[14] | Visual C++ 2012 이전 버전은 C99를 [29][30][31]지원하지 않았습니다. Visual C++ 2013은 널리 사용되는 오픈 소스 프로젝트를 [32][33]컴파일하는 데 필요한 C99의 제한된 서브셋을 구현합니다. Visual C++ 2015는 컴파일러가 아직 지원하지 않는 컴파일러 기능에 의존하는 라이브러리 기능(예: <tgmath)을 제외하고 C99 표준 라이브러리를 구현합니다.h>는 [14]실장되어 있지 않습니다). Visual C++ 2019 (16.6) 에서는, C99 준거 프리 프로세서의 [34]옵트인 서포트가 추가되었습니다. |
| Watcom 열기 | 부분적 | 표준에서 가장 일반적으로 사용되는 부품을 구현합니다.단, 이 명령어는 문서화되어 있지 않은 명령줄 스위치 "-za99"를 통해서만 유효하게 됩니다.C99 기능은 C90 확장으로 번들되어 있습니다.v1.0 이전부터 C++ 스타일의 코멘트(//), 플렉시블 어레이 멤버, 열거형 [35]선언에서 사용할 수 있는 후행 콤마입니다. |
| 펠레스 C | 가득한 | 모든 C99 [36]기능을 지원합니다. |
| 휴대용 C 컴파일러 | 부분적 | C99에 [citation needed]준거하기 위해 노력하고 있습니다. |
| 선 스튜디오 | 꽉[37] 차다 | |
| 암스테르담 컴파일러 키트 | 아니요[citation needed]. | C99 프론트엔드는 현재 [citation needed]조사 중입니다. |
| Tiny C 컴파일러 | 부분적 | 복잡한 번호는 [38][39]지원하지 않습니다.가변 길이 배열은 지원되지만 함수에서[citation needed] 인수로 지원되지 않습니다.개발자는 "TCC는 ISOC99의 완전한 컴플라이언스를 지향하고 있다"[40]고 말하고 있습니다. |
| vcc | 부분적 |
장래의 일
1999년 C 표준이 비준된 이후, 표준 작업 그룹은 임베디드 처리, 추가 문자 데이터 유형(유니코드 지원), 향상된 경계 검사 기능을 명시한 기술 보고서를 작성했습니다.작업은 10진수 부동소수점, 추가 수학적 특수함수 및 추가 동적 메모리 할당 함수를 다루는 기술 보고서에 대해 계속 진행됩니다.C 및 C++ 표준 위원회는 스레드 프로그래밍의 사양에 대해 협력해 왔습니다.
C 표준의 다음 개정판인 C11은 [41]2011년에 비준되었다.C 표준 위원회는 기존 구현에서 테스트되지 않은 새로운 기능의 채택을 제한하는 지침을 채택했습니다.시퀀스 포인트를 명확히 하고 스레드 프로그래밍을 지원하기 위해 메모리 모델을 개발하는 데 많은 노력이 소요되었습니다.
「 」를 참조해 주세요.
- C++20, C++17, C++14, C++11, C++03, C++98, C++ 프로그래밍 언어 표준 버전
- C와 C++의 호환성
- C++ 테크니컬 리포트 1
- 부동 소수점 - IEEE 754 하드웨어 사용에 대한 자세한 설명
레퍼런스
- ^ "ISO/IEC 9899:1999 - Programming languages - C". Iso.org. 8 December 2011. Retrieved 8 April 2014.
- ^ a b "IEEE 754 Support in C99" (PDF). grouper.ieee.org. Archived from the original (PDF) on 28 October 2017. Retrieved 15 July 2021.
- ^ "Standards - Using the GNU Compiler Collection (GCC)". Gcc.gnu.org. Retrieved 8 April 2014.
- ^ "C Dialect Options - Using the GNU Compiler Collection (GCC)". Gcc.gnu.org. 6 May 2009. Retrieved 8 April 2014.
- ^ "Using the GNU Compiler Collection (GCC): Designated Initializers". gnu.org. Retrieved 18 September 2019.
- ^ "Using the GNU Compiler Collection (GCC): Compound Literals". gnu.org. Retrieved 31 January 2016.
- ^ Ulrich Drepper (23 October 2007). "What every programmer should know about memory". LWN.net. Retrieved 3 April 2015.
- ^ ISO/IEC 9899:1999 specification, TC3 (PDF). p. 119, § 6.7.5.3 Function declarators (including prototypes) para. 7.
- ^ Doug Priest (1997). "Differences Among IEEE 754 Implementations".
- ^ Jack Woehr (1 November 1997). "A conversation with William Kahan".
- ^ William Kahan (11 June 1996). "The Baleful Effect of Computer Benchmarks upon Applied Mathematics, Physics and Chemistry" (PDF).
- ^ William Kahan (11 January 2006). "How Futile are Mindless Assessments of Roundoff in Floating-Point Computation?" (PDF).
- ^ Peter Bright (29 June 2013). "C99 acknowledged at last as Microsoft lays out its path to C++14". Ars Technica. Retrieved 9 January 2015.
- ^ a b c Brenner, Pat. "What's New for Visual C++ in Visual Studio 2015". Microsoft Developer Network. Retrieved 27 April 2015.
- ^ "Using the x86 Open64 Compiler Suite" (PDF). Developer.amd.com. Archived (PDF) from the original on 24 January 2022. Retrieved 2 March 2022.
- ^ "cc65 - a freeware C compiler for 6502 based systems". Retrieved 14 September 2011.
- ^ "C/C++ interpreter Ch C99 features". SoftIntegration, Inc. 15 February 2008. Retrieved 15 February 2008.
- ^ "Clang Compiler User's Manual". Retrieved 14 October 2017.
- ^ "The CompCert C verified compiler documentation and user's manual (Version 3.10)". 19 November 2021. Retrieved 3 March 2022.
- ^ "libfirm homepage". Retrieved 4 February 2014.
- ^ "C Language Implementation - Digital Mars". Retrieved 14 September 2011.
- ^ "Status of C99 features in GCC". Free Software Foundation, Inc. 28 July 2021. Retrieved 13 August 2021.
- ^ "Status of C99 features in GCC 4.6". Free Software Foundation, Inc. 23 May 2013. Retrieved 23 May 2013.
- ^ "Status of C99 features in GCC 4.7". Free Software Foundation, Inc. 23 May 2013. Retrieved 23 May 2013.
- ^ "Semantics of Floating Point Math in GCC". 20 July 2018. Retrieved 12 August 2018.
- ^ "IBM C for AIX, V6.0 Now Supports the C99 Standard". Retrieved 31 January 2016.
- ^ "IBM - XL C/C++ for AIX". Retrieved 31 January 2016.
- ^ "IBM Rational Logiscope support for C99 standard - United States". 24 February 2012. Retrieved 31 January 2016.
- ^ "Reader Q&A: What about VC++ and C99?". Sutter’s Mill. 3 May 2012. Retrieved 31 January 2016.
- ^ "A.27 Use of C99 Variable Length Arrays". Microsoft. Retrieved 31 January 2016.
- ^ "Microsoft to C99 Developers: Use ISO C++". InfoQ. Retrieved 31 January 2016.
- ^ "C99 library support in Visual Studio 2013". Microsoft. 19 July 2013. Retrieved 31 January 2016.
- ^ "C++11/14 STL Features, Fixes, And Breaking Changes In VS 2013". Blogs.msdn.com. 28 June 2013. Retrieved 8 April 2014.
- ^ "Announcing full support for a C/C++ conformant preprocessor in MSVC". Microsoft. 27 March 2020. Retrieved 17 September 2020.
- ^ "C99 compliance in Open Watcom". Archived from the original on 3 May 2015. Retrieved 25 September 2015.
- ^ "Pelles C Overview". January 2013. Archived from the original on 13 March 2022. Retrieved 2 March 2022.
- ^ "Sun Studio 12: C Compiler 5.9 Readme". Sun Microsystems, Inc. 31 May 2007. Retrieved 23 September 2012.
- ^ "Tiny C Compiler Reference Documentation". Retrieved 31 January 2016.
- ^ 프로젝트의 TODO 목록에 따르면 C99 기능이 누락된 것은 복합 유형뿐입니다.가변 길이 어레이는 TCC 0.9.26에 추가되었습니다[ 1 ]
- ^ "TCC : Tiny C Compiler". Retrieved 31 January 2016.
- ^ "Standards - Using the GNU Compiler Collection (GCC)". Gcc.gnu.org. Retrieved 8 April 2014.
추가 정보
- Cheng, Harry (1 March 2002). "C99 & Numeric computing". Dr. Dobb's Journal.
- Seebach, Peter (24 March 2004). "Open source development using C99". developerWorks. IBM.
- "Final version of the C99 standard with corrigenda TC1, TC2, and TC3 included, formatted as a draft" (PDF). (3.61 MB)
- 국제표준의 근거—프로그래밍 언어—C 버전 5.10, 2003년 4월-C99의 근거
