CLA가 C 1999에 도입되었을 때, VLA가 언어에 큰 혁신이라고 생각했습니다. 그러나 C 2011에서 옵션으로 선택되었다는 사실을 알게 된 후 상태가 어떻게 바뀌 었는지 궁금해하며 실제로 기능이 더 이상 사용되지 않는 경우가 있습니다. 그렇다면, 동적으로 크기가 조정 된 데이터를 대체 할 것으로 간주되는 자동 관리 개념과 동등한 개념이 있습니까?
C 2011 근거 문서를 찾으려고했지만 아직 게시되지 않은 것 같습니다.
CLA가 C 1999에 도입되었을 때, VLA가 언어에 큰 혁신이라고 생각했습니다. 그러나 C 2011에서 옵션으로 선택되었다는 사실을 알게 된 후 상태가 어떻게 바뀌 었는지 궁금해하며 실제로 기능이 더 이상 사용되지 않는 경우가 있습니다. 그렇다면, 동적으로 크기가 조정 된 데이터를 대체 할 것으로 간주되는 자동 관리 개념과 동등한 개념이 있습니까?
C 2011 근거 문서를 찾으려고했지만 아직 게시되지 않은 것 같습니다.
답변:
"일부 작은 실수는 VLA없이 C11을 준수 할 수 있어야하므로 선택 사항이어야 함"에서 "처음에는 실수"까지 다양한 범례를 들었습니다. 그래도 나는 이것에 대한 진실하고 확실한 대답을 한 번도 얻지 못했습니다. 궁극적으로, 나는 (내 오래된 검색이 진행되는 한) (공식이 있다고 가정하고) 가정 된 적이 없기 때문에 누군가가 실제로 하나를 가지고 있다고 생각하지 않습니다.
국제 표준-프로그래밍 언어-C 5.10 (2003)의 이론적 근거 4 장 (13 페이지)부터
표준은 수용하는 프로그램과 관련하여 적합한 구현을 정의함으로써, 적합한 구현의 일부로서 광범위한 확장을위한 문을 열어 둡니다. 표준 호스팅 준수 및 독립 실행 형 구현을 모두 정의함으로써 표준은 운영 체제 및 ROM 기반 응용 프로그램뿐만 아니라보다 일반적인 호스팅 응용 프로그램과 같은 프로그램을 작성하는 데 C를 사용한다는 것을 인식합니다. 이 두 가지 수준의 계획 외에도 C89위원회는 너무 많은 수준이 표준의 효과를 희석한다고 강하게 느끼기 때문에 C에 대한 추가 하위 설정이 정의되지 않았습니다 .
강조합니다. 이 결정은 자신의 이론적 근거에 위배됩니다. 그러나 또 다른 것은 선택 사항이었습니다. 이제 __STDC_NO_VLA__
VLA 지원 을 받거나받을 수 있습니다 . 매우 이상한 결정입니다.
공개위원회 문서 (특히 N1395 ) 에서 결정할 수있는 한, VLA (복잡한 산술 및 스레딩과 함께)를 선택적으로 만드는 주요 이유 중 하나는 소형 임베디드 프로세서에 적합한 C 컴파일러를 만들 수있게하는 것이 었습니다.
추세는 임베디드 시스템을 대상으로하는 컴파일러 공급 업체가 고객이 요구하지 않은 큰 기능의 도입으로 인해 C90 표준을 유지하고 있다는 것이 었습니다.