函数定义后不能在其他函数调用问题
项目场景:
使用ART-Pi基于RT-Thread进行开发
问题描述:
在使用RTT做开发时,在一个函数c文件内定义了一个线程,想要在另外一个函数文件内调用,发现一直报错没有定义,报错如下:
D:\RT-ThreadStudio\workspace\art_pi_factory_1\modules\OLE/oled.h:15:13: warning: 'oled_init' declared 'static' but never defined [-Wunused-function]
static void oled_init(void);
^
../modules/OLE/oled.c:15:13: warning: 'oled_init' defined but not used [-Wunused-function]
static void oled_init(void)
^
In file included from ../applications/main.c:18:0:
D:\RT-ThreadStudio\workspace\art_pi_factory_1\modules\OLE/oled.h:15:13: warning: 'oled_init' used but never defined
static void oled_init(void);
原因分析:
报错显示未定义oled_init();但是oled_init()却已经定义,并且引用方式正常,然后仔细分析oled_init的定义方式,如下
static void oled_init(void);
然后百度,解决问题,static定义的变量或者函数只能在本地文件调用,不能被其他c文件调用,若想要在其他c文件调用,必须将其定义成全局变量;定义如下
void oled_init(void);
编译通过
解决方案:
删除静态static定义,改为全局定义函数,使之可以在其他c文件内调用!