C99 및 C 호환성 예외
C는 일반적으로 C의 하위 집합이지만 C 언어의 특정 뉘앙스로 인해 일부 항목을 직접 컴파일하는 것이 금지됩니다. 유효한 C 코드. 고려해야 할 몇 가지 주요 차이점은 다음과 같습니다.
1. 임시 정의 없음
C에서는 동일한 이름을 가진 변수의 여러 선언을 허용하지만 C에서는 그렇지 않습니다. 결과적으로 C에서 유효한 다음 코드는 C에서 컴파일되지 않습니다.
int n; int n; // ill-formed: n already defined
2. 호환되지 않는 배열 유형
C에서 배열은 int[] 또는 int[N] 구문으로 선언될 수 있습니다. 그러나 C에서는 이를 다르게 처리합니다. C에서 유효한 다음 코드는 C에서 오류를 발생시킵니다.
int a[1]; int (*ap)[] = &a; // ill-formed: a does not have type int[]
3. K&R 함수 정의 스타일 허용되지 않음
C는 K&R 스타일의 함수 정의를 지원하지만 C는 지원하지 않습니다. C에서 유효한 다음 코드는 C에서는 컴파일되지 않습니다.
int b(a) int a; { } // ill-formed: grammar error
4. 중첩된 구조체 범위 차이점
C에서는 중첩된 구조체에 파일 범위가 있고 C에서는 클래스 범위가 있습니다. 이는 C에서 유효한 다음 코드가 C에서는 컴파일되지 않음을 의미합니다.
struct A { struct B { int a; } b; int c; }; struct B b; // ill-formed: b has incomplete type (*not* A::B)
5. 기본값 없음 int
C는 C와 달리 정수 변수의 기본값을 int로 허용하지 않습니다. 따라서 C에서 유효한 다음 코드는 C에서 오류를 발생시킵니다.
auto a; // ill-formed: type-specifier missing
C99의 추가 예외
이러한 예외 외에도 C99에서는 C와의 추가 비호환성이 발생합니다.
위 내용은 C99와 C 코드의 차이점으로 인해 컴파일 오류가 발생합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!