如何指定函数属性general-regs-only?解决g++编译报错问题
解决G++中ISR函数添加
general-regs-only属性的报错问题 你遇到的报错是因为general-regs-only并非GCC直接支持的函数属性名,它本质是一个编译选项,需要通过target属性间接指定给单个函数。
正确的写法是把general-regs-only放在target()属性中,和isr属性配合使用:
void SysTick_Handler() __attribute__ ((isr, target("general-regs-only")));
相关说明:
isr是GCC专为中断服务函数设计的属性,用于标识该函数为中断处理函数target("选项")属性可为单个函数指定专属编译选项,这里的general-regs-only会让编译器只为该函数生成仅使用通用寄存器的代码,避免浮点寄存器被修改,从而消除你遇到的警告
如果不需要仅针对单个函数做限制,也可以直接在编译时给整个文件添加-mgeneral-regs-only选项。
内容的提问来源于stack exchange,提问作者wimalopaan
相关产品推荐
相关产品推荐

