我想为多个函数创建弱别名,以便可以在头文件中声明它,然后稍后在其他文件中对其进行定义。由于某些原因,我仍然从gcc收到重新定义错误。
理想情况下,对于没有实现的功能,我希望它默认返回别名。
我尝试删除别名(“ Default_Handler”),并且似乎可以编译,但是这破坏了我打算编写的该应用程序的意图。
vector_table.h
void __attribute__((noreturn)) Default_Handler (void);
void nmI_Handler(void) __attribute__((weak,alias("Default_Handler")));
startup.c
#include "vector_table.h"
void Default_Handler(void){
for(;;);
}
void nmI_Handler(void){
for(;;);
}
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -Wall -Wno-unused -Wextra -pedantic -H -g3 -gdwarf-2 -O0 -std=c90 -ffreestanding -c startup.c
startup.c:93:6: error: redefinition of 'nmI_Handler'
void nmI_Handler(void){
^
In file included from startup.c:3:0:
vector_table.h:17:6: note: previous definition of 'nmI_Handler' was here
void nmI_Handler(void) __attribute__((weak,alias("Default_Handler")));