C++ 为什么数组变量不能初始化?
我有一个非常简单的代码:C++ 为什么数组变量不能初始化?,c++,visual-studio-code,C++,Visual Studio Code,我有一个非常简单的代码: 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编译,没有任何问题。然而,VisualStudio代码C++智能感知是报告错误的一种。 <
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
编译,没有任何问题。然而,VisualStudio代码C++智能感知是报告错误的一种。 < P> DimChtz是正确的,在变量时,不能初始化具有大小的数组。
您最好只初始化没有大小的数组:
uint16_t dataSize = 5;
uint8_t wdata[] = { 5, 6, 7, 8, 9 };
Merek R的建议最终成为了解决方案:
const uint16_t dataSize = 5;
uint8_t wdata[dataSize] = { 5, 6, 7, 8, 9 };
<代码> uTI8*T WDATA [数据化] < /代码>这不是有效的C++代码。在某些编译器中,这是可能的,但不要这样做。可变长度数组通常不受支持。在C(从C99)中,可以声明,但不能在C++中声明。某些编译器允许您将其作为扩展。将
dataSize
设为常量。更好的是,您可以根据wdata
的大小计算dataSize
。