为什么要使用__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)),你会得到一个想法,这个函数的定义可能不会有,你现在可以搜索,而不是试图寻找一种不函数的实际定义为任何编译别名/可不存在!