我在解决从函数返回动态结构数组的语法时遇到了问题。我有以下小例子:
`timescale 1ns/10ps
typedef struct{
string Name;
int Age;
} PersonType;
function PersonType A [] getPeopleInfo();
automatic string Name [50];//Max of 50 people
automatic int Age [50];
PersonType A [];
/*Turns out we only have 3 people->this may change at runtime*/
Name[0]="Jon";Age[0]=25;
Name[1]="Ana";Age[1]=32;
Name[2]="Ali";Age[2]=19;
A=new[3];/*This size may change at runtime*/
for(int idx=0;idx<3;idx++)
begin
A[idx].Name=Name[idx];
A[idx].Age=Age[idx];
end
return A;
endfunction // getPeopleInfo
module Test();
PersonType A [];
initial begin
A=getPeopleInfo();
for(int idx=0;idx<A.size();idx++)
begin
$display(A[idx].Name);
$display(A[idx].Age);
end
end
endmodule // Test
当我修改函数以便它将动态struct数组作为参数传递时,即:
void getPeopleInfo(output PersonType A []);
然后它工作正常。是否可以从函数?返回动态结构数组?如果是,那么正确的语法是什么?。
答案 0 :(得分:2)
如果希望函数返回解压缩类型,则需要typedef
。
typedef PersonType PersonType_da_t[];
function automatic PersonType_da_t getPeopleInfo();