나는이 매우 간단하게 코드가 있습니다배열 변수를 초기화 할 수없는 이유는 무엇입니까?
uint16_t dataSize = 5;
uint8_t wdata[dataSize] = { 5, 6, 7, 8, 9 };
을 나는 오류 메시지 :
variable "wdata" may not be initialized
uint8_t wdata[dataSize]
그것은 .ccp 확장자를 가진 파일에 있습니다. 유사한 문과 오류 메시지가있는 다른 테스트 사례 파일이 있습니다.
코드는 gcc
으로 아무런 문제없이 컴파일됩니다. 그러나 Visual Studio Code C++ IntelliSense는 오류를보고합니다.
'uint8_t가 [dataSize]'이 아니다 WDATA 유효한 C++ 코드. 일부 컴파일러에서는 가능하지만하지 않습니다. 가변 길이 배열은 일반적으로 지원되지 않습니다. – DimChtz
C에서 (C99에서) [가변 길이 배열] (http://en.cppreference.com/w/c/language/array)을 선언 할 수 있지만 C++에서는 선언 할 수 없습니다. 일부 컴파일러에서는 확장자로 사용할 수 있습니다. –
'dataSize'를 상수로 만듭니다. –