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

C++ 全局變量重複定義:搜索 j1 符號定位重複聲明位置

     編輯:程式設計綜合問答

排查方法

  1. IDE 全局搜索 j1(區分大小寫、整詞匹配)。
  2. 檢查:long double V1,j1,j2... 行是否在**頭文件**中,被多個 `.cpp` 包含導致多重定義。
  3. 若必須跨文件共享:
    — 头文件声明 extern long double j1;
    — 單一 `.cpp` 定義 long double j1;

代碼異味

列表中出現數百個全局變量(`a1..a38`, `o1..o35`, `b1..b10`...),**強烈建議重構**:

  • 封裝為結構體/類:`struct Params { long double a[38]; char o[35][12]; ... };`
  • 單例或依賴注入傳遞上下文,消除全局狀態。
  • 使用命名空間隔離:`namespace Config { extern long double j1; }`

編譯器輔助

  • GCC/Clang: `-fno-common` 強制報錯 tentative definition 重複。
  • MSVC: `/Zc:strictStrings` 等嚴格模式。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved