-1

这就是我正在尝试的。我已将结构传递给函数。在函数中,我将结构的值存储在一个数组中。在返回时,我只想发送基于特定条件在数组中定义的那些值。例如,假设我有一个 10 的数组定义,我想在函数中根据条件从该数组中只返回 5 个值。这是一个示例代码:

sc_uint<8> *arrayfill(struct){
sc_uint<8> array[10];

 array[1] = struct.a;
 array[2] = struct.b;
 ...
 if (struct.trigger == false){
  array[10] =0;
 }
 else 
 {
   array[10] = struct.j;
 }

return array;
}
4

1 回答 1

0

因为你不能从一个函数返回一个自动存储数组,我建议你返回一个std::vector<sc_uint<8>>。它本质上只是将您的sc_uint<8>值包装在一个易于使用和移动的动态数组中。

然后只需根据您的标准push_back返回您想要返回的值。vector


例如:

std::vector<sc_uint<8>> arrayfill(struct){
    std::vecotr<sc_uint<8>> array;
    array.reserve(10); // Reserves space for 10 elements.

    array.push_back(struct.a); // This will be the first element in array, at index 0.
    array.push_back(struct.b); // This will be the second element at index 1.
    ...
    if (struct.trigger == false){
      array.push_back(0);
    }
    else 
    {
      array.push_back(struct.j);
    }
    // At this point, array will have as many elements as push_back has been called.
    return array;
}

使用std::vector::insert添加一系列值:

array.insert(array.end(), &values[3], &values[6]);

values一些数组在哪里。上面会将索引 3 到索引 5 的值(不包括范围,索引 6 处的值不会插入)插入valuesarray.

于 2015-02-09T09:01:36.377 回答