静态任务函数声明中的引用参数是非法的是什么意思?
Reference argument is illegal inside static task function declaration what is meaning?
program main();
int a;
initial
begin
#10 a = 10;
#10 a = 20;
#10 a = 30;
#10 $finish;
end
task pass_by_val(int i);
forever
@i $display("pass_by_val: I is %0d",i);
endtask
task pass_by_ref(ref int i);
forever
@i $display("pass_by_ref: I is %0d",i);
endtask
initial
pass_by_val(a);
initial
pass_by_ref(a);
我指的是上面的网站 运行 但我有一些这样的错误消息。
Reference argument is illegal inside static task function declaration.
通常 tasks/functions inside module/programs 默认是静态的,根据第 13.5.2 节 IEEE 1800 - 2012
的引用传递
It shall be illegal to use argument passing by reference for
subroutines with a lifetime of static.
要解决仅使用引用传递 'ref
' 到自动 task/function
task automatic pass_by_ref(ref int i);
forever
@i $display("pass_by_ref: I is %0d",i);
endtask
program main();
int a;
initial
begin
#10 a = 10;
#10 a = 20;
#10 a = 30;
#10 $finish;
end
task pass_by_val(int i);
forever
@i $display("pass_by_val: I is %0d",i);
endtask
task pass_by_ref(ref int i);
forever
@i $display("pass_by_ref: I is %0d",i);
endtask
initial
pass_by_val(a);
initial
pass_by_ref(a);
我指的是上面的网站 运行 但我有一些这样的错误消息。
Reference argument is illegal inside static task function declaration.
通常 tasks/functions inside module/programs 默认是静态的,根据第 13.5.2 节 IEEE 1800 - 2012
的引用传递It shall be illegal to use argument passing by reference for subroutines with a lifetime of static.
要解决仅使用引用传递 'ref
' 到自动 task/function
task automatic pass_by_ref(ref int i);
forever
@i $display("pass_by_ref: I is %0d",i);
endtask