導航:首頁 > 源碼編譯 > 函數未定義但是能編譯運行

函數未定義但是能編譯運行

發布時間:2025-05-13 17:43:25

1. Linux下編寫c語言頭文件,編譯時出現「函數未定義」

出現該錯誤的原因為編譯時只變編譯了源文件的一部分,故在鏈接時無法從編譯好的目標代碼中找到print函數,所以出錯。


根據你的源文件結構,個人推薦先單獨編譯源文件為多個object文件,再統一鏈接。

方法如下

gcc-cmain.c#-c參數的作用是讓gcc只編譯,不鏈接
gcc-ctest.c
gcc-omainmain.otest.o#將編譯好的目標代碼鏈接

當然,以上是在gcc為編譯器的前提下執行,如使用clang等其他編譯器,方法類似(clang的調用方法與gcc高度兼容)

2. main()函數未定義是怎麼回事

這類錯誤是編譯器找不到指定的符號定義。它是在連接的時候出現的,有兩種可能:

1、你寫的這個函數只有省名,沒有定義。

2、這個函數是動態連接庫導出的函數,而你沒有連接它的lib庫文件可以用「#pragma comment(lib, "那個庫.lib")」編譯命令或設置VC的lib文件路徑。

仔細查看代碼是構建了main函數的,但是如下代碼:(紅框位置)

(2)函數未定義但是能編譯運行擴展閱讀:

C++函數分類:(main()函數是可執行程序的入口函數)

一、從用戶使用的角度看,函數有兩種:

1、標准函數,即庫函數。這是由系統提供的。

2、用戶自定義的函數。可以解決用戶的專門需要。

二、從函數的形式看,函數分兩類:

1、無參函數。printstar和print_message就是無參函數。在調用無參函數時,主調函數並不將數據傳送給被調用函數,一般用來執行指定的一組操作。

2、有參函數。在調用函數時,在主調函數和被調用函數之間有數據傳遞。也就是說,主調函數可以將數據傳遞給被調用函數使用,被調用函數中的數據也可以帶回來供主調函數使用。

閱讀全文

與函數未定義但是能編譯運行相關的資料

熱點內容
迪普交換機命令行 瀏覽:5
查詢5g覆蓋用什麼app 瀏覽:677
hadoopipc源碼分析 瀏覽:523
單片機控制繼電器的程序 瀏覽:574
python實現spy 瀏覽:330
php原生模板 瀏覽:864
查食品企業用什麼App 瀏覽:798
便血pdf 瀏覽:246
文件夾搜索後圖片不能連續翻頁 瀏覽:530
香港數據加密系統費用 瀏覽:538
騰訊雲伺服器qq注銷 瀏覽:449
三菱plc有pld編程實例 瀏覽:672
虛擬列印機pdfwin7 瀏覽:600
支持加密通信的手機有哪些 瀏覽:60
安卓如何增加藍牙 瀏覽:57
加密貨幣平台去中心化什麼意思 瀏覽:721
plc結構語言命令 瀏覽:780
阿里雲五千程序員 瀏覽:314
什麼app充手機電話費便宜 瀏覽:213
安徽存儲伺服器雲主機 瀏覽:848