RT-Thread在MDK环境下 $sub和$super的含义

RT-Thread中:
components.c 中定义的这段代码:

//components.c 中定义
/* re-define main function */
int $Sub$$main(void)
{
    rt_hw_interrupt_disable();
    rtthread_startup();
    return 0;
}
  • Sub main(void) 是在主程序main前插入一段新代码,这段代码可以用来初始化系统。
  • MDK中Super 和Sub 的含义:

这是MDK的扩展功能,如果需要在原有的函数前面添加一些代码,但又不能修改原函数,使用Sub $$ 和 Super )便可以在原函数前面插入一个例程来办到。

  • 例如
extern void $Super$$test(void);
//自定义代码
void test_1()
{
   printf("test_1 fun\n");
}
//原函数   
void test()
{
   printf("test  fun\n");
}
void $Sub$$test(void)
{
   test_1();
   $Super$$test();
}

使用$Super $ $ test()来替代原函数fun(),然后在$Sub $$ test()函数中调用它,便可以在函数前后添加自定义代码了,这样便能够达到在完全对原函数不做修改的情况下,在前后添加自己的代码。

发布了12 篇原创文章 · 获赞 52 · 访问量 3008

猜你喜欢

转载自blog.csdn.net/weixin_42881419/article/details/90736807