Devc++編程過程中的一些報錯總結


  以下都是我在使用Devc++的過程中出現過的錯誤,通過查找資料解決問題,今天小小地記錄、整理一下。

1.[Error] invalid conversion from 'const char*' to 'char' [-fpermissive]

  出現該錯誤的原因是:使用字符串操作函數 strcmp,strcpy時傳入的必須是指針

  例如  :strcmp(a[i],"f"),這是錯的,因為a[i]是值,不是指針,應該改為strcmp(&a[i],"f")

2.[Error] 'malloc' was not declared in this scope

  出現該錯誤的原因是:使用malloc()函數時需要添加頭文件#include<stdlib.h>,可能free()函數也是,因為也報了類似的錯誤

3.Program received signal SIGSEGV,Segmentation fault.報錯

  該錯誤出現在我調試的過程中,錯誤出現的原因指針未初始化或越界,訪問到未分配地址空間。

  不過,雖然知道了錯誤出現的原因,這個問題曾經還是困擾了我很久,下面,我分享一下我與該錯誤的斗爭經過,以下代碼是修改正確后的

 1 typedef struct             //數組存儲型順序棧,存儲數據int型 
 2 {
 3     int data[Maxsize];
 4     int top;
 5 }IntStack;

 6 void InitStack(IntStack **s)    //數據為int型的棧的初始化 
 7 {
 8     *s=(IntStack *)malloc(sizeof(IntStack));
 9     (*s)->top=-1;
10 }
  本來照着課本上使用c++的&引用符可以寫成void InitStack(IntStack *&s),然而,我保存文件時保存成.c文件了,於是c++的引用符就用不了了,一旦使用就會出現編譯錯誤。於是,第一次,我去掉了&符號,改成使用指針,改成了void InitStack(IntStack *s),發現編譯過了,但是運行起來是錯誤的,沒有結果輸出,返回值也是錯誤的(如果運行成功應該返回0,然而它卻返回一大串隨機數字)

  然后,我就開始調試,在進行到第六行時得到這個錯誤。下面是我自己的理解:

  首先,我在main函數中定義了一個  IntStack *s=NULL  ,並將其初始化為NULL,如果我是用void InitStack(IntStack *s)函數,調用時就要寫InitStack(s),那么實際上我是將s中的值傳到了函數中,而s中的值是NULL,將NULL傳入到函數中,這不是我想要的。

  實際上,InitStack函數的調用結果,我想要的是,申請一塊可以存儲IntStack型結構體的空間,並將這塊空間的地址保留到s中,以便通過s進行進一步的訪問,所以,malloc函數得到的地址其實應該作為s的值,賦給s,於是,我們需要傳入的就是s的地址,也就是二級指針,具體函數如上,調用時就寫成InitStack(&s),然后。。妥了,其實也確實是指針越界導致的錯誤啦,畢竟你啥也沒傳進去嘛,還想調用,想太多了。。。。

4.[Error]ld returned 1 exit status

  出現錯誤的原因可能有:

    1.是你的程序已經在運行,關閉原來的程序就可以正常了

    2.你機器上有殺毒(安全)軟件阻止了你程序的生成,退出殺毒(安全)軟件再試下。

    3、檢查聲明函數名與定義的是否一致,最好復制過來。

5.[Error]expected declaration or statement at end of input

  可能錯誤:

    1.某一個函數或者變量沒有在使用之前聲明。

    2.某個地方少了個括號。即括號不匹配。調試過程中不一定是光標提示處括號不匹配,可能是附近模塊。

6.文件包含錯誤

  這個主要是理清文。件間的包含關系,避免重復包含。我現在一般是用Devc++建工程,就三個文件,一個頭文件,三個.c文件,其中一個是main文件,兩個是放函數的文件,然后在.c文件中都包含.h文件就可以了。

7.bool類型在C語言中的使用

  如果想要在Devc++上寫C語言,又想用bool類型(C語言貌似是沒有bool類型的哦),那么可以通過添加頭文件  #include<stdbool.h>  ,這樣就可以使用bool了。

                              初入道不久的小白,如有紕漏,望請指正。

 

 

   


免責聲明!

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



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