Handelc中的function相当于C语言中的子函数,macro是Handelc中特有的宏声明,类似与define的功能,但是与define用法区别很大。
macro使用起来比define要灵活很多,具体用法:
用法1: macro expr DATA=10;
macro expr add(x)=x+3;
用法2:
macro proc add(x,y)
{
x=x+y;
}
下边讲下function和macro的异同:
区别1:
void inline f_pseudoswap (int 12 x, int 12 y)
{
par
{
x = y;
y = x;
}
}
macro proc mp_swap (x, y)
{
par
{
x = y;
y = x;
}
}
如果调用mp_swap(a,b),
那么a和b的值就被调换了。但是如果调用函数f_pseudoswap(a,b),
a和b的值不会交换
区别2:
macro 中不能有返回值,function中可以有,即可以使用return关键字。
区别3:
Macro 不共享硬件,function共享硬件。每调用一次macro都会单独产生一次相同的硬件。而调用function或shared结构时,不产生另外的硬件。
注:macro可以通过shared关键字使之变为能共享硬件的宏,而function前面如果有inline关键字,那么它也就不能共享硬件了
区别4: macro和inline function可以在并行结构par{ }中被多次调用,而function不能,由于共享硬件的原因在同一个时钟内只能被调用一次。