编译程序的时候总报 “内联函数声明但未定义” 的警告。
问题如:
bsp/lcd/bsp_lcd.h:84:13: warning: inline function ‘lcd_drawpoint’ declared but never defined
84 | inline void lcd_drawpoint(unsigned short x,unsigned short y,unsigned int color);
bsp/lcd/bsp_lcd.h:86:21: warning: inline function ‘lcd_readpoint’ declared but never defined
86 | inline unsigned int lcd_readpoint(unsigned short x,unsigned short y);
解决办法:
编译时加上 -fgnu89-inline 编译就没有问题了。注意不是在终端make后面加,而是在你对应的Makefile文件的gcc 后面。
如:CC := $(CROSS_COMPILE)gcc -fgnu89-inline
以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。错误原因参考如下: