为什么要使用__attribute __((弱))和#pragma弱?
问题描述:
我读代码来定义中断向量为STM32 here。出于某种原因,既__attribute__((weak))
和#pragma weak
使用:为什么要使用__attribute __((弱))和#pragma弱?
void __attribute__((weak)) NMI_Handler(void); /* NMI Handler */ // [line 12]
#pragma weak NMI_Handler = Default_Handler /* NMI handler */ // [line 48]
不知怎的,它认为,同时使用__attribute__((weak))
和#pragma weak
是多余的。
可以没有他们中的一个?这是款式标准吗?
答
你是对的,但...
#pragma weak NMI_Handler = Default_Handler
单独
能做到什么打算。 但是这将是很好的补充__attribute__((weak))
的函数原型原因如下 -
假设该文件是洒了一档巨大的一个有定义和原型。现在,您使用的IDE /编辑器跳转到NMI_Handler
原型,当你到达那里并没有看到连接到NMI_Handler
__attribute__((weak))
你不妨假设NMI_Handler
定义别的地方去鹅追捕无处结束了!现在,他们已经明确添加__attribute__((weak))
,你会得到一个想法,这个函数的定义可能不会有,你现在可以搜索,而不是试图寻找一种不函数的实际定义为任何编译别名/可不存在!