已經包含了頭文件,但編譯提示未定義變量的一種情況分析


問題產生背景:

ipc_mem.c文件中引用了定義有con_conf_t結構體的con_conf_info.h頭文件,並且ipc_mem.h頭文件中聲明con_conf_t結構體變量,而sample.c引用了頭文件ipc_mem.h了,但是編譯提示ipc_mem.h中未定義con_conf_timage-20210128164000368

問題分析:

這是因為sample.c中沒有引用定義有con_conf_t結構體的con_conf_info.h頭文件,只引用聲明了con_conf_t結構體變量的ipc_mem.h頭文件,所以提醒sample.c:28:00,即sample.c第28行引用的con_conf_t未定義。

所以,需要確認好別的文件中是否也需要包含相關頭文件,如果是,光在一個地方引用頭文件是不夠的。

如本次問題中,ipc_mem.c中會用到con_conf_t結構體,而sample.c中雖然不會用到con_conf_t結構體,但是sample.c中包含了ipc_mem.h,而ipc_mem.h中又聲明了con_conf_t結構體變量,所以編譯到sample.c文件時,由於看到ipc_mem.h聲明了con_conf_t,但是編譯器不止知道con_conf_t是哪里來的,所以會報錯。

問題解決:

要解決這個問題,只需要在sample.c再引用con_conf_info.h頭文件,再編譯即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM