C++ 常見編譯錯誤及解決方法


1.[Error] in C++98 'box1' must be initialized by constructor, not by '{...}'

vector初始化問題: CBox box1 ={78.0,24.0,18.0}; 改成 CBox box1 (78.0,24.0,18.0)

或者開啟編譯選項 -std=c++11

 2. 變量定義的問題:

例如:想要定義三個整型變量,初始化為0;

>>int a, b, c=0;這樣不對!!!

>>int a, b, c; a=b=c=0; 這樣可以!

>>int a=0, b=0, c=0; 這樣可以!

 3. 二維數組作為函數參數時必須注意:

將二維數組當作參數的時候,必須指明所有維數大小或者省略第一維的,但是不能省略第二維或者更高維的大小;

原因:這是由編譯器原理限制的。事實上,編譯器是這樣處理數組的:

      對於數組 int p[m][n],如果要取p[i][j]的值(i>=0 && i<m && 0<=j && j < n),編譯器是這樣尋址的,它的地址為:

         p + i*n + j;//注意n!!

         這里如果省略了第二維或者更高維的大小,編譯器將不知道如何正確的尋址!!!

正確寫法:

void function(int p[][n])

void function(int p[m][n])

void function(int p[][])這樣不可以

4. makefile編譯出錯: undefined reference to 'RBF()'

collect2: error: ld returned 1 exit status

一開始以為是makefile寫的依賴關系出錯,但后來發現竟然是RBF這個函數的聲明和定義里的參數不一樣,有沒有&都會報錯,要統一;

 

 

--------(不斷更新中)

日積月累,滴水穿石


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM