>백엔드 개발 >C++ >C에 가변 길이 배열(VLA)이 존재합니까?

C에 가변 길이 배열(VLA)이 존재합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-16 13:11:03785검색

Do Variable Length Arrays (VLAs) Exist in C  ?

C의 가변 길이 배열

C가 가변 길이 배열(VLA)을 지원하지 않는다는 일반적인 가정에도 불구하고 이를 달성하는 방법이 있습니다. 유사한 기능. 그러나 이러한 방법을 사용한다고 해서 모든 컴파일러에서 호환성이 보장되는 것은 아니라는 점에 유의하는 것이 중요합니다.

코드 설명

제공한 예제 코드는 다음과 같은 이유로 컴파일되고 작동합니다.

  • GCC 호환성: GCC 버전 4.7 이상은 VLA를 확장으로 지원합니다. 이는 코드가 GCC로 컴파일될 때 int a[n];
  • 자동 스토리지 할당: VLA는 기능 시작 시 자동으로 할당되는 메모리 유형인 스택에 저장됩니다. 따라서 코드에서는 사용자가 입력한 n 값을 기준으로 스택에 a가 할당됩니다.

표준 지원

유의해야 할 사항 C 표준에서는 VLA를 지원하기 위해 컴파일러가 필요하지 않습니다. 따라서 VLA를 사용하는 코드는 다른 컴파일러나 플랫폼에서 이식 가능하지 않을 수 있습니다.

C 14 및 C 17에 대한 제안 실패

처음에는 VLA가 C 14 표준에 포함되어 있습니다. 그러나 제안은 투표 과정을 통과하지 못했고 VLA는 언어에 추가되지 않았습니다. 또한 이 제안은 C 17에 포함되지 않았습니다.

결론

VLA는 공식적으로 C 표준의 일부는 아니지만 확장으로 사용할 수 있습니다. GCC와 같은 특정 컴파일러에서. 그러나 특히 크로스 플랫폼 코드에서는 잠재적인 이식성 문제를 인식하고 VLA를 주의해서 사용하는 것이 중요합니다.

위 내용은 C에 가변 길이 배열(VLA)이 존재합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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