C의 불완전성: C가 하위 집합에서 갈라지는 곳
C가 C 내에 완전히 포함되어 있다는 빈번한 주장에도 불구하고 미묘한 차이로 인해 주장이 불완전합니다. 이 기사에서는 C에서 허용되는 코드가 C에서 호환되지 않는 사례를 강조하여 이를 구별하는 차이점을 조명합니다.
복잡한 명확성
C는 변수에 대해 더 엄격한 규칙을 적용합니다. 잠정성을 금지하는 정의. int n과 같이 동일한 변수를 반복적으로 선언합니다. int n;은 C와 달리 C에서는 허용되지 않습니다.
배열 호환성 차이
C에는 C에 존재하지 않는 유형 호환성 제약 조건이 도입되었습니다. C에서는, int a[1] 배열은 유형이 다르지만(int[] 대 int[]) 포인터 int (*ap)[] = &a에 할당될 수 있습니다. 정수[1]). 이 할당은 C에서 실패합니다.
사용되지 않는 함수 정의
C는 K&R 스타일의 함수 정의를 버리고 int b(a) int a; { } 구문이 올바르지 않습니다.
중첩 구조체 범위 차이
C의 중첩 구조체는 C와 달리 클래스 범위를 갖습니다. 결과적으로 둘러싸는 구조체 외부에 중첩 구조체를 선언합니다. struct B b;와 같은 정의로 인해 C에서 불완전한 유형 오류가 발생합니다. .
명시적 유형 지정자 필요
C에서는 모든 선언에 명시적 유형 지정자를 요구합니다. auto a;와 같이 유형 정보를 생략하면 구문 오류가 발생합니다.
C99는 추가 불일치에 기여합니다
C99는 추가 비호환성을 도입합니다.
위 내용은 C의 더 엄격한 규칙은 C의 더 관대한 접근 방식과 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!