为了使一个用户定义的函数被执行,该函数必须与一个特殊的堆栈跟踪代码相连。堆栈跟踪技术靠在函数的入口点和出口点插入预处理器宏指令完成(一个函数只有一个入口点,但可以有多个出口点(由C语言的return声明决定)),这些宏指令为:FIN、FOUT和FRET。

FIN被插入到的入口点;FOUT被插入到函数的出口点,但却不返回任何值;FRET被插入到函数的出口点,返回一个值。

注意这些宏指令不需要以分号结束(它们自我包含),但OPNET提供的例程中均以分号结束。FIN的参数中也不需要双引号。OPNET提供的所有的示例模型都包含了这些宏指令,并且建议用户定义的函数也包含这些宏指令。如果FIN、FOUT、和FRET被正确插入了用户代码中,我们就可以使用op_vuerr来找出程序错误的位置,哪怕是在一个嵌套的模型函数调用中。

因此Function Block函数块格式如下:

1
2
3
FIN(send_pkt())
your code
FOUT

如果上述格式的代码中只有FIN而没有FOUT,那么OPNET会有如下的出错信息:

1
2
<<< Program Abort >>>
Standard function stack imbalance

相关文章:

  • 2022-12-23
  • 2021-08-02
  • 2022-02-08
  • 2021-08-13
  • 2021-08-27
  • 2021-08-18
  • 2022-03-07
  • 2021-10-31
猜你喜欢
  • 2021-05-14
  • 2022-12-23
  • 2022-12-23
  • 2021-11-15
  • 2022-12-23
  • 2021-10-15
  • 2021-09-29
相关资源
相似解决方案