首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误C2131:创建结构数组时,表达式的计算结果不是常量

错误C2131:创建结构数组时,表达式的计算结果不是常量
EN

Stack Overflow用户
提问于 2020-04-08 13:45:00
回答 2查看 3.3K关注 0票数 0

我正在尝试创建结构数组。我用来创建结构数组的方法,该方法在Linux和Mac中运行良好,但在windows中抛出错误。

代码语言:javascript
复制
uint32_t size;
Test TestArray[size];
TestArray[i] = Test;
//i

进入windows时出错

代码语言:javascript
复制
error C2131: expression did not evaluate to a constant 

我也试过

代码语言:javascript
复制
typedef struct Test {
    char *x;
    char *y;
} Test;

uint32_t size;
status = napi_get_array_length(env,args[2],&size);
assert(status == napi_ok);

struct Test  testList[size];
napi_value SharePrefixObject;
for(uint32_t i=0;i<size;i++){
Test t;
testList[i]= t;

问题:如何解决上述错误?

EN

回答 2

Stack Overflow用户

发布于 2020-04-08 14:24:50

C++中没有可变长度数组。实现这一点的C++方法是使用向量。

你的代码很像C语言。声明结构的方式类似于C,使用指针的方式类似于习惯用法的C。不管怎样,如果您想进行一些适当的C++编程,那么可以这样做。

代码语言:javascript
复制
#include <vector>

std::vector<Test> testList(size);
票数 2
EN

Stack Overflow用户

发布于 2020-04-08 14:07:31

您需要使用常量作为数组大小,如下所示:

代码语言:javascript
复制
Test TestArray[123]; //were 123 - max size of your's array data

代码语言:javascript
复制
#define TEST_ARRAY_SIZE 123

Test TestArray[TEST_ARRAY_SIZE];

如果您需要不同大小,请使用类似mallok的代码:

代码语言:javascript
复制
uint32_t size;
Test *TestArrayPnt;

//some ware you got a size like size = 123

TestArrayPnt = new Test[size];

//continue a program. You can use TestArrayPnt [111] were 111 some offset less than size

delete[] TestArrayPnt; //when finish
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61094030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档