>백엔드 개발 >C++ >GCC가 C에서 가변 크기 배열을 허용하는 이유는 무엇입니까?

GCC가 C에서 가변 크기 배열을 허용하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-01 09:26:30665검색

Why does GCC allow variable-sized arrays in C  ?

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에서는 배열 크기를 지정하기 위해 상수가 아닌 변수를 사용할 수 있습니다.

그러나 주의해야 할 중요한 주의 사항이 있습니다:

  • 이식성 문제: 이 확장은 C 표준의 일부가 아니므로 코드가 다른 C 컴파일러로 컴파일되지 않을 수 있습니다.
  • 가능한 경고: GCC가 다음과 같은 경우 경고를 발행하도록 -pedantic 옵션을 활성화할 수 있습니다. 이 확장자를 사용합니다.
  • 엄격 모드의 오류: -std=c 98을 설정하면 GCC가 일정하지 않은 배열 크기 사용을 오류로 처리하게 됩니다.

확장 사용:

이 확장을 활용하려면 크기가 상수가 아닌 변수로 배열을 선언하세요.

<code class="cpp">int arraySize = 5;
int myArray[arraySize];</code>

이식성 극복 우려 사항:

이식성이 우려되는 경우 가변 크기의 배열 대신 std::벡터 컨테이너를 사용할 수 있습니다.

<code class="cpp">std::vector<int> myVector(arraySize);</code>

이 확장을 활용하면 더 큰 이점을 얻을 수 있습니다. 동적 상황에서 배열 크기를 관리하는 유연성. 그러나 프로젝트에 사용할 때는 제한 사항을 인지하고 이식성에 미치는 영향을 고려하는 것이 중요합니다.

위 내용은 GCC가 C에서 가변 크기 배열을 허용하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.