天天看點

函數定義後不能在其他函數調用問題項目場景:問題描述:原因分析:解決方案:

項目場景:

使用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定義的變量或者函數隻能在本地檔案調用,不能被其他c檔案調用,若想要在其他c檔案調用,必須将其定義成全局變量;定義如下

編譯通過

函數定義後不能在其他函數調用問題項目場景:問題描述:原因分析:解決方案:

解決方案:

删除靜态static定義,改為全局定義函數,使之可以在其他c檔案内調用!

上一篇: 析構函數~
下一篇: C#析構函數