首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ undefined reference 錯誤:函數聲明與定義參數不匹配

     編輯:程式設計綜合問答

錯誤現場

鏈接階段報 undefined reference to 'sort(int[][3], double*, int)',但代碼中明明寫了實現。

典型原因:聲明與定義參數類型不一致

// 聲明(頭文件或前置聲明)
void sort(int ar[][4], double br[], int s); // 第二維度寫 4

// 定義(cpp 文件)
void sort(int ar[][3], double br[], int s) { // 實際寫 3
    ...
}

C++ 將二維數組第二維度視為類型一部分,int[][3] 和 int[][4] 是完全不同的類型,導致鏈接器找不到匹配的符號。

修復清單

  1. 統一聲明與定義的所有參數類型(含數組維度、const、引用、指針層級)。
  2. 檢查命名空間是否一致。
  3. 確認頭文件被正確包含,且無宏導致條件編譯不一致。
  4. 模板函數必須聲明定義在同一頭文件。

調試技巧

  • 用 nm (Linux) / dumpbin /symbols (Windows) 查看目標文件實際導出符號。
  • 臨時在定義處加 extern "C" 排除名字修飾干擾(僅限 C 接口)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved