MS Visual C++에서 C99에 정의 된대로 VLA, 가변 길이 배열을 사용하도록 설정하려면 어떻게해야합니까? 아니면 전혀 사용할 수 없습니까?MS Visual C++에서 VLA (가변 길이 배열)를 사용 하시겠습니까?
예 C++ 표준은 C89를 기반으로하고 있으며 VLA는 C89 표준에서 사용할 수 없으므로 C++에서는 사용할 수 없다는 것을 알고 있지만 MSVC++는 C 컴파일러이기도합니다./TC 컴파일러 매개 변수 (Compile as C Code (/TC)
)를 사용하여 켜십시오. 하지만 이렇게하면 VLA를 사용할 수없는 것처럼 보이고 C++ (Compile as C++ Code (/TP)
)로 빌드 할 때 동일한 오류로 컴파일 프로세스가 실패합니다. 어쩌면 MSVC++ C 컴파일러는 C89 호환 또는 뭔가 (일부 특수 구문 또는 pragma/define) 누락되었습니다?
코드 샘플 :
#include <stdlib.h>
int main(int argc, char **argv)
{
char pc[argc+5];
/* do something useful with pc */
return EXIT_SUCCESS;
}
컴파일 오류 :
오류 C2057 : 예상 상수 식
오류 C2466 : 일정한 크기의 어레이를 할당 할 수없는 0
오류 C2133 : 'pc': 알 수없는 크기
뿐만 아니라 아마도 다음과 같이 할 수 없습니다. http://connect.microsoft.com/VisualStudio/feedback/details/333273/request-for-c99-vla-in-visual-studio 너무 좋지 않습니다. –
그러면 분쟁이 해결됩니다. :-) VLA를 가능하게하는 언어에 대한 Microsoft의 확장 기능이 있습니까? GCC에는 C99 준수 외에도 C90 및 C++ 용으로 사용할 수있는 기능이 있습니다. http://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html – Shinnok
John이 제공 한 링크는 아직 존재하지 않으며 곧 제공 될 것 같지 않습니다. –