函数定义后不能在其他函数调用问题

项目场景:

使用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文件内调用!

猜你喜欢

转载自blog.csdn.net/qq_45396672/article/details/112847505
今日推荐