비상수 변수를 사용한 배열 크기 선언
C의 배열 크기는 상수 정수여야 한다는 널리 받아들여지는 개념과는 달리, 최근 관찰에 따르면 일부 컴파일러는 이와 관련하여 더 큰 유연성을 허용한다는 사실이 밝혀졌습니다. C 표준에서는 배열 범위가 상수 표현식이어야 한다고 명시하고 있지만 GCC에서는 배열 크기 선언에 상수가 아닌 변수를 사용할 수 있는 확장 기능을 도입했습니다.
다음 예를 고려하세요.
<code class="c++">int ArraySize = 5; int MyArray[ArraySize];</code>
표준 C에서는 ArraySize가 상수가 아니기 때문에 이 코드는 컴파일러 오류를 생성합니다. 그러나 GCC는 아무런 문제 없이 이를 즐겁게 컴파일합니다.
이 동작을 이해하려면 GCC의 확장이 C 표준에서 벗어난 것임을 인정하는 것이 중요합니다. Bjarne Stroustrup의 "The C 프로그래밍 언어"에서 발췌한 내용에는 배열 범위가 상수 표현식이어야 한다고 명시되어 있습니다.
이에도 불구하고 GCC 확장은 런타임 시 배열을 동적으로 할당하는 편리한 방법을 제공합니다. GCC 확장에 의존하는 코드는 다른 호환 C 컴파일러에서 컴파일되지 않을 수 있으므로 이러한 유연성은 이식성을 희생한다고 주장할 수 있습니다.
이식성이 우려되는 경우 GCC는 표준 준수를 시행하는 옵션을 제공합니다. 컴파일 중에 -pedantic 플래그를 전달하면 일정하지 않은 배열 크기 선언에 대한 경고가 발생하고 -std=c 98은 이를 오류로 처리합니다. 이러한 옵션은 런타임 편의성보다 C 표준을 엄격하게 준수하는 데 우선순위를 둡니다.
위 내용은 C에서 배열 크기를 선언하기 위해 상수가 아닌 변수를 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!