错误:信号参数在函数调用时需要信号表达式

问题描述

简短的问题:

我编写了一个以信号整数作为参数的函数。当我在进程中调用 signal parameter requires signal expression 时,编译器会抛出错误 my_function(INTEGER_SIGNAL - 5)。 有人可以向我解释什么是信号表达式以及我如何正确调用函数吗?

提前致谢!

解决方法

通常对于您希望使用常量类参数的函数。

信号类参数要求您将它们连接到信号 - 即:没有表达式。当您使用信号参数时,您只需要函数内部的信号,例如 'event.对于过程,当您希望对象更新时,您还需要一个信号 - 例如当它在等待语句中使用或在等待语句之后被读取时(并且您希望一个潜在的更新值)。

使用常量类参数,您可以将它们与该类型的任何值连接起来。该值可以来自表达式或文字值 (X"4A")。信号名称或变量名称是表达式的简单形式。

常量类也恰好是您未指定参数类的输入的默认值。在下面的代码中,参数A和B都是常量类参数。

function fred (
   constant A : integer ; 
            B : integer
) return integer is 
 ...
end function fred ;