C C 常見錯誤彙總 1

2021-05-28 11:57:08 字數 1350 閱讀 2808

1、undefinedreferenceto'

__gxx_personality_v0'

編譯器用的是gcc,請換成g++

2、將乙個原始檔由.cpp 改為.cc 重新make,結果找不到依賴,沒有規則可以生成

進入.deps/資料夾,修改了那個檔案字尾就好了

3、程式中用了sizeof,根據乙份指導,我一般都用sizeof(variable),而不是用sizeof(typename),因為variable可能將來更改型別,在這種情況下,有時候variable是指標,所以應該用sizeof(*variable),如果漏了*,那麼編譯沒問題,執行時會出錯。

4、char* 與 const char*的區別,應該在該加const的時候盡量加,一則可能利於編譯優化,二則可能可以在編譯期間找出bug

5、我想將乙個文字檔案中的內容顯示到螢幕上, 用line[4096];

fgets(line)接著printf(line)可能會出錯,因為文字內容一旦包含%,那麼line就不是乙個簡單字串了,正確的用法是printf("%s",line);

6、signed 與 unsigned 進行比較會被提公升為unsigned,一旦signed是負值,就可能導致相反結果。

7、派生類析構函式要virtual,否則基類指標指向派生類只會呼叫基類的析構函式

8、expected unqualified-id before numeric constant

某些情況下,系統會用一些全大寫的變數名做預處理巨集的名稱,如果你在程式中恰好用了這樣的名稱,就可能會出這樣的錯誤,例如當時我用了max_url_len

9、錯誤:不能將緊實的字段 繫結到...

如果使用了巢狀結構體,並且對巢狀結構體做了

__attribute((packed))限定,可能會導致這個錯誤,例如

void fun(int & x ) 

struct a

; //} __attribute((packed)); // 用這一行替換上面一行,會出錯

b b;

} __attribute((packed));

int main()

10、在cpp中定義inline member function出錯

往往你在.h中宣告,在.cpp中定義,然後在其它cpp中呼叫就會出現編譯錯誤。這是因為inline的成員函式必須在.h中定義,要麼直接在類的宣告處定義,要麼就寫在.h的下面,然而這樣可能會覺得.h有點難看。

一般做法是寫乙個.inl檔案,將所有的inline member function寫到裡面,然後在.h檔案的末尾#include ***.inl檔案。

C C 常見錯誤彙總

筆記本 macbook air,作業系統 macos,ide clion,工具鏈如下圖 出錯原因 片段沒有寫在函式中。解決方法 將 片段寫進函式中。出錯原因 main.cpp中沒有找到對應的函式名宣告,沒有在.cpp引用包含該函式名的標頭檔案.h。解決方法 引入對應標頭檔案。出錯原因 main.cp...

struts 常見錯誤彙總

1.no bean found under attribute key 在struts config.xml裡定義了乙個actionform,但type屬性指定的類不存在,type屬性的值應該是form類的全名。或者是在action的定義中,name或attribute屬性指定的actionform...

django 常見錯誤彙總

file d python django mysite mysite view.py line 7syntaxerror unicode error utf 8 codec can t decode byte 0xa3 in position 0 invalid start byte 1 synta...