gcc g 編譯的那些事

2021-06-05 22:08:31 字數 888 閱讀 3529

嚴重宣告:本帖絕非技術貼,只是在g++編譯時遇到些百思不得其解的錯誤,而且這種錯誤應該很少人犯,寫下來僅供你實在找不錯出錯地方時的「柳暗花明又一村」。

我在編譯時總是提示「cprocessmodule.cpp中68行乙個變數 'o_typename' 未宣告」(注:cprocessmodule.cpp在src目錄下,cprocessmodule.h在include目錄下)我在cprocessmodule.h裡檢視了無數遍確定宣告了此變數。這是個私有變數,難道...?不對啊,成員函式可以訪問私有變數啊!那。。。我又想是否是上傳到伺服器時**沒有上傳成功(未覆蓋原版本**),這個是很有可能的。

$ grep o_typename include/cprocessmodule.h

string o_typename;

$發現標頭檔案也宣告此變數了。然後我查了所有可能出錯的地方(大小寫、分號、大括號。。。)均沒有問題,估計這個時候就該崩潰了。搞了我一上午啊。結果無意中我

$ vi src/cprocessmodule.h

大家發現什麼問題了嗎?src ,*.h ,奇怪的是竟然我還開啟了檔案,搜尋 發現確實沒有o_typename這個變數。正當我困惑時發現,我把目錄名打成「src」,竟然還能開啟檔案。說明src目錄下也有這個檔案,查詢了下發現一堆.cpp檔案裡藏了這個.h檔案,最可恨的是這個還是老版本的.h檔案,是沒有宣告此變數的。

這就好理解了。大家知道包含標頭檔案時分兩種形式,雙尖頭號<>,雙引號。前者是在系統庫里搜尋標頭檔案,後者一般是自己寫的標頭檔案。這樣區分開的原因就是讓編譯器快速找到相應的標頭檔案。編譯器找標頭檔案所在目錄的先後順序是:系統庫目錄-->源檔案目錄-->其他目錄。我的源檔案目錄src裡有乙個標頭檔案,include目錄裡有乙個,呼叫時肯定是先呼叫本目錄下的,因此就出現了這種狀況。這都是本人不小心造成的惡果,寫出來與大家分享,引以為戒。

C 編譯那些事

最近想從pcl庫中繼承類進行改寫,然後遇到了很多問題,這裡記錄一下,自己是菜鳥,編譯什麼的都不太懂。我們一般都是.cpp和.h的形式,pcl是在.h中定義,然後在.hpp中實現,cpp的作用我現在也沒搞明白,還有涉及預編譯什麼的,蒙 從庫的.h和.hpp分別複製了檔案出來,命名成自己的,繼承類也改了...

gcc g 編譯過程

階段輸入 輸出工具 示例預編譯 c i 預處理器cpp gcc e test.c o test.i 編譯 i s 彙編 編譯器egcs gcc s test.i o test.s 彙編 s o 目標 彙編器as gcc c test.s o test.o 鏈結 o 可執行檔案 聯結器ld gcc t...

關於Winform編譯配置那些事

這次我們來聊聊winform編譯中的那些屬性設定,也算對這部分知識的乙個梳理。debug release platform不同設定的內部差別 常規設定 錯誤和警告 將警告視為錯誤 輸出高階設定 在使用visual studio的過程中,工具欄上面的build欄是我們常常開啟顯示而不怎麼去關注的乙個地...