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