C의 가변 크기 배열: GCC 확장으로 컴파일
C에서는 일반적으로 배열 크기가 상수 정수여야 합니다. 그러나 GCC는 배열 크기를 선언하기 위해 상수가 아닌 변수를 사용할 수 있는 확장 기능을 제공합니다.
질문:
다음 코드가 GCC에서 성공적으로 컴파일되는 이유는 무엇입니까? ?
<code class="cpp">void f(int i) { int v1[i]; } int main() { int i = 3; int v2[i]; f(5); }</code>
답변:
이 동작은 GCC에서 도입한 C 표준의 확장입니다. 기본적으로 GCC에서는 배열 크기를 지정하기 위해 상수가 아닌 변수를 사용할 수 있습니다.
그러나 주의해야 할 중요한 주의 사항이 있습니다:
확장 사용:
이 확장을 활용하려면 크기가 상수가 아닌 변수로 배열을 선언하세요.
<code class="cpp">int arraySize = 5; int myArray[arraySize];</code>
이식성 극복 우려 사항:
이식성이 우려되는 경우 가변 크기의 배열 대신 std::벡터 컨테이너를 사용할 수 있습니다.
<code class="cpp">std::vector<int> myVector(arraySize);</code>
이 확장을 활용하면 더 큰 이점을 얻을 수 있습니다. 동적 상황에서 배열 크기를 관리하는 유연성. 그러나 프로젝트에 사용할 때는 제한 사항을 인지하고 이식성에 미치는 영향을 고려하는 것이 중요합니다.
위 내용은 GCC가 C에서 가변 크기 배열을 허용하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!