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

举报
JeckXu666 发表于 2022/01/15 22:45:18 2022/01/15
【摘要】 项目场景: 使用ART-Pi基于RT-Thread进行开发 问题描述: 在使用RTT做开发时,在一个函数c文件内定义了一个线程,想要在另外一个函数文件内调用,发现一直报错没有定义,报错如下: ...

项目场景:

使用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);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

原因分析:

报错显示未定义oled_init();但是oled_init()却已经定义,并且引用方式正常,然后仔细分析oled_init的定义方式,如下

	static void oled_init(void);

  
 
  • 1

然后百度,解决问题,static定义的变量或者函数只能在本地文件调用,不能被其他c文件调用,若想要在其他c文件调用,必须将其定义成全局变量;定义如下

	void oled_init(void);

  
 
  • 1

编译通过
在这里插入图片描述


解决方案:

删除静态static定义,改为全局定义函数,使之可以在其他c文件内调用!

文章来源: blog.csdn.net,作者:JeckXu666,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_45396672/article/details/112847505

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。