通过声明将函数添加到数组中

时间:2020-04-08 15:51:24

标签: c

我看过一些库,例如STM32 SPL,使用了这个巧妙的技巧:您只需声明一个具有特定名称的函数即可将函数添加到函数数组(在SPL情况下为中断向量表),即{ {1}}或SysTick()。用C如何实现?

到目前为止,我能做的最好的事情是:

EXTI0_Handler()

在声明用户功能之前,我仍然需要添加//Library void SysTickNull() { printf("does nothing\n"); }; #define SysTick SysTickNull //User code #undef SysTick void SysTick() { printf("does something\n"); } typedef void (*call)(); int main() { call calls[] = { SysTick }; // interrupt table works when user code is present or when it's absent calls[0](); } 。但是我所看到的示例甚至没有#undef部分,以某种方式编译器(或链接器?)知道必须使用函数的用户版本。或者,当它不存在存根函数或将NULL放入数组插槽中时。

我玩过预处理器,但也找不到任何解决方案。

0 个答案:

没有答案