C에서 가변 길이 배열(VLA) 허용
C 표준에 가변 길이 배열(VLA)이 없음에도 불구하고, g 및 clang과 같은 컴파일러는 놀랍게도 VLA 구문을 허용합니다. 이로 인해 컴파일러의 동작과 이 비표준 기능의 의미에 대한 의문이 제기되었습니다.
컴파일러 허용 범위
컴파일러가 VLA를 수용하는 것은 고유한 설계에서 비롯됩니다. 특히 GCC는 레거시 C 컴파일러와의 호환성을 우선시하므로 기술적으로 C 표준의 일부가 아니더라도 VLA 구문을 인식할 수 있습니다.
표준 위치
C 문법은 배열 크기가 상수 표현식이어야 함을 지정합니다. VLA는 변수 표현식을 사용하므로 이 규칙을 위반하므로 C 표준의 일부로 간주되지 않습니다.
컴파일러 구현
C 컴파일러의 VLA는 컴파일러 확장으로 구현됩니다. . 컴파일러는 일반 배열과 유사하게 실행 중에 스택에 배열을 할당하여 이를 처리합니다. 그러나 표준에서는 이 동작을 정의하지 않으므로 컴파일러마다 다를 수 있습니다.
결과
C에서 VLA를 사용하면 다음과 같은 몇 가지 의미가 있습니다.
위 내용은 표준 금지에도 불구하고 일부 C 컴파일러가 가변 길이 배열(VLA)을 허용하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!