>백엔드 개발 >C++ >표준에도 불구하고 가변 길이 배열이 C에서 컴파일되고 실행되는 이유는 무엇입니까?

표준에도 불구하고 가변 길이 배열이 C에서 컴파일되고 실행되는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-12 13:35:02448검색

Why Do My Variable Length Arrays Compile and Execute in C   Despite the Standard?

C에서 가변 길이 배열이 지원됩니까?

질문:

가변 길이 배열(VLA)이 지원된다는 개념에도 불구하고 C 표준의 일부가 아닌데, 다음 코드가 성공적으로 컴파일되고 실행되는 이유는 무엇입니까?

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    int a[n];

    for (int i=0; i<n; i++) {
        a[i] = i;
    }

    for (int i=0; i<n; i++) {
        cout << a[i] << endl;
    }
}

답변:

C 표준은 컴파일러에게 다음을 요구하지 않습니다. VLA를 지원합니다. 그러나 컴파일러 공급업체는 VLA를 확장으로 포함할 수 있습니다. 예를 들어, GCC 버전 4.7 이상은 VLA를 지원합니다.

VLA는 처음에 C 14에 포함되도록 제안되었지만 받아들여지지 않았습니다. 이후 C 17 개정판에도 포함되지 않았습니다.

위 내용은 표준에도 불구하고 가변 길이 배열이 C에서 컴파일되고 실행되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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