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()函數中調用它,便可以在函數前後添加自定義代碼了,這樣便能夠達到在完全對原函數不做修改的情況下,在前後添加自己的代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章