不能分配常量大小为0的数组
cannot allocate an array of constant size 0
int len = GetWindowTextLengthW(hwndEdit) + 1;
wchar_t text[len];
我错误2:不能分配常量大小为0的数组
错误3:'text':未知大小
错误1错误C2057:期望的常量表达式
我不明白为什么它不会编译,因为GetWindowTextLengthW(hwndEdit) + 1> 0
null+1 = 1不是真的吗?
您想要的是不必关心内存管理,对吗?这就是为什么选择静态分配数组。
是的,您可以使用new
作为这里推荐的答案,但我建议:
std::vector< wchar_t > text;
首先,您正在使用声明静态大小数组的语法,但您传递了在运行时评估的大小变量。这就是为什么它不能编译。
第二,你不能静态地分配一个大小为0的数组,但这是另一个问题(尽管std::array
允许你这样做)。
我认为你应该使用动态分配:
wchar_t* text = new wchar_t[len]
或者更好,使用std::wstring
或std::vector<wchar_t >
尝试:
wchar_t* text = new wchar_t[len];
确实,错误消息抱怨为零而不是非常数值会令人困惑(就像一些编译器抱怨未定义类型为int一样)。VLA是C99的一个特性,仅在某些c++编译器中作为扩展出现(并且正在以不同的名称部分添加到c++ 14中)。在MSVC下,最接近的等价(在堆栈上分配,不调用释放函数)是_alloca。
相关文章:
- 如何在C++中将数组转换为矢量指针
- 将浮动的heightmap数组导出为16位原始值
- 将C++中的数组转换为字符串
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 将 int 数组转换为 std::vector<int*>
- 在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量
- 无法在 Arduino 中uint8_t数组转换为无符号长整型数组
- 将字节数组转换为带有字节序问题的指针
- 使用 stbi_write_png,如何将 0 和 1 的矩形字节数组转换为单色 png 文件?
- 如何在 C++ 中将数组划分为不同的数组
- 将字符数组转换为时间结构
- 将字节数组转换为多维数组
- 可视化 如何在C++中将字符数组转换为 FILE 类型
- 在 C++ 中将整数数组转换为位集表示形式的最佳方法?
- 无法将字符串数组声明为类成员而不是字符 (C++)
- C++如何将字符数组转换为字节向量(向量<byte>)
- 将字符数组转换为结构时出现问题. 结构的字符数组变量溢出
- 我应该如何将较小的std::数组构造为较大数组的切片
- 将一个std::数组拆分为一个较小大小的std::array元组
- 在最小执行时间内找到给定数组中和为零的所有唯一三元组