C加加語言編譯依賴兩大巨坑?
後台C++服務多依賴,編譯鏈接會出現幾種常見問題,導致coredump,總結了一些,希望可以幫大家從容應對。
想要一起學習C語言C++的可以加裙四九二八八一四零四,裙內有各種資料滿足大家,更新最新行業行情
1.背景
本文不是論述簡單的普世的C++編譯問題,而是在其它環境下容易碰到的問題。其他讀者雖然也能參考,但是因為上下文的關係,可能會有困惑,忘諒解。
有的瀏覽器後台以C++開發為主,常見的編譯問題不足為懼,跟著編譯器的提示一步步fix便是。但是有一些編譯問題,是後台大規模團隊協作時特有的,碰上後往往焦頭爛額,希望這篇文章能提供些幫助。
想要一起學習C語言C++的可以加裙四九二八八一四零四,裙內有各種資料滿足大家,更新最新行業行情
2.問題
大規模協作,一個明顯的現象是互相依賴,由此孕育了諸多問題。筆者將常見的問題模式總結出來,命名如下:三角依賴,循環依賴。
3.C++編譯基礎
便於後面闡述,我們先複習下編譯的基礎知識。
C++是一門編譯型的強類型語言。編譯型沒有問題,有人可能會對強類型提出質疑,C++確實有些地方不是類型安全的,特別是兼容C的地方,但是我認為稱其為強類型無妨,不必掉書袋子。
GIF/14K
想要一起學習C語言C++的可以加裙四九二八八一四零四,裙內有各種資料滿足大家,更新最新行業行情
C++源代碼要經過預處理、編譯、鏈接這三步後方能生成可執行程序。
預處理不包含任何語義,純粹是拷貝。甚至不用include xxx.h文件,可以include任意文本文件
每一個預處理後的 xxx.cpp文件都是單獨編譯的,理解這點非常重要。
靜態鏈接包含符號查找和地址重定位兩步
4.三角依賴
想要一起學習C語言C++的可以加裙四九二八八一四零四,裙內有各種資料滿足大家,更新最新行業行情
三角依賴是最常見的一個依賴問題,會導致線上出core,咱們第一個解決它。
4.1 產生步驟
三角依賴首先滿足以下要求
有一個公共jce,叫 C,一般放在公共庫目錄
A的jce某個方法的請求或應答體依賴了C的某結構體
B調用A的那個方法,並且B依賴了C的那個結構體
上面表述為了嚴謹性,讀起來比較繞。不嚴謹地講,就是
有公共庫C
A依賴C
B依賴A,且B依賴C
滿足以上三個條件後,故事即將發生。當B的開發者因為需求要升級C,他發布C後,接著就興沖沖地發布B,結果剛發布成功,duang的一下,B就掛了。
如果幸運的話,可以從core看出是調用A的地方出問題了。有的時候,錯誤會指向別處,令人摸不著頭腦。
想要一起學習C語言C++的可以加裙四九二八八一四零四,裙內有各種資料滿足大家,更新最新行業行情
喜歡這篇文章記得點一下關注哦,每天穩定更新最新資訊
點擊展開全文
※學C加加語言你該這樣擁有真正的編程能力
※C加加程序員基本知識
※C語言和C加加語言的本質區別在哪?
※零基礎初學者該如何學習C加加語言
※逐步深入學習C加加這門語言,不需要速成
TAG:萌萌的程序員 |