『壹』 C語言:下面的代碼為什麼會出現編譯錯誤應當怎麼改正
錯誤出在a=sum;這一句——因為構成C語言程序的基本單位是函數而不是C語句,這里的a=sum;不在任何函數中,所以編譯器無法處理而出錯。把它放到主函數中的printf("%d ",a(3,5));之前就可以了。函數外只能進行全局變數定義或聲明,而不能進行其他操作,所以把int (*a)(int, int); a=sum;兩句改成int (*a)(int, int)=sum;,讓它成為聲明變數a並初始化為sum也是可以的。你可以試試。
代碼文本:
#include "stdio.h"
int sum(int a, int b);
int (*a)(int, int);
int main(int argc,char *argv[]){
a=sum;
printf("%d ",a(3,5));
return 0;
}
int sum(int a,int b){
return a+b;
}
『貳』 為什麼顯示編譯錯誤
這個問題貌似很常見,找了下資料,得知0xc0000135錯誤一般是由於軟體運行時需要微軟的.Net Framework環境,而當前操作系統中正好沒安裝該組件,而安裝的軟體正好需要該組件支持的,所以在安裝或運行時會出錯,一般會報告0xc0000135這個錯誤代碼。
只要下載安裝.Net Framework組件即可解決問題。要注意的是,不同的軟體對.Net Framework組件版本的要求可能不一樣,一般新的軟體安裝最新版本的就可以了,目前最新版好象是4.0。。通常情況下,高版本的.Net Framework可以兼容低版本,但軟體本身要求高版本的,操作系統安裝的是低版本的則不可以。
『叄』 EXCEl宏運行編譯錯誤是怎麼回事
這是隱藏程序的VBA代碼執行出錯。解決方法:
1)在Excel中按 Alt+F11 打開宏編輯器;
2)在宏編輯器中按 Ctrl+R 打開 工程資源管理面板(如果已打開,按 Ctrl+R 後不會有任何變化);
3)在工程資源管理面板中找到你的那個文件,點開,檢查是否存在「模塊n」(n為1、2……),在這些模塊上逐個點右鍵,「移除模塊n」。
4)最後保存,即可。
『肆』 c++中什麼是語法錯誤,什麼是編譯錯誤
簡單的說,
語法錯誤:就是你的c++代碼書寫有問題,不是標準定義的;(比如
int寫成了in,漏寫個分號,漏寫個括弧,把int型參數賦值給字元串,等等),一般語法錯誤在編譯時都是可以被編譯器發現,發出警示的;
編譯錯誤:是在編譯時你本身的代碼沒問題,但是調用的一些文件、函數庫,找不到,或者和你想要使用的版本不一致,導致函數參數不一樣。
大多數情況下我們分類錯誤都是說
語法錯誤
和
邏輯錯誤;
邏輯錯誤:指你的語法正常,編譯也能通過,但是按你的代碼執行會出錯。包括執行結果與預期不一致,或者程序執行就掛掉(一般是內存泄露等問題)
『伍』 為什麼寫了程序之後,進行編譯,卻提示編譯錯誤
可能是沒有正確配置系統庫的路徑,或將後綴名誤寫成了.c而不是.cpp。
『陸』 C語言編譯錯誤這個是為什麼
第一行: 將char **類型作為第2個實參傳給strcpy函數,函數第二個形參的類型是 const char *
第二行: 將char **類型作為第1個實參傳給strcpy函數,函數第一個形參的類型是 char *
第三行:意思同第二行
出錯的原因是,編譯器檢查到傳給strcpy函數的實參和形參的類型不符。
建議:
檢查一下程序中調用了strcpy函數的語句,確保實參的類型與strcpy函數
原型中聲明的形參的類型一致。
『柒』 編譯錯誤
編譯錯誤,一般指語法上的錯誤,比如 int a = "abcdef";String a = 1234; int i = new object();簡單地說編譯錯誤就是說你的代碼有問題,比如說語法錯誤,這個很容易理解。
『捌』 程序編譯錯誤不知道是什麼原因
不能通編譯過的程序實際上還不是合法的程序,因為它不滿足C語言對於程序的基本要求。
檢查語法錯誤的第一要義:集中力量檢查系統發現的第一個錯誤,弄清並改正它。
在編譯過程中系統發現的錯誤主要有兩類:基本語法錯誤和上下文關系錯誤。這些錯誤都在表面上,可以直接看得見。也是比較容易弄清,比較容易解決的。關鍵是需要熟悉C語言的語法規定和有關上下文關系的規定,按照這些規定檢查程序正文,看看存在什麼問題。
編譯中系統發現錯誤都能指出錯誤的位置。不同系統在這方面的能力有差異,在錯誤定位的准確性方面有所不同。有的系統只能指明發現錯誤的行,有的系統還能夠指明行內位置。
一般說,系統指明的位置未必是真實錯誤出現的位置。通常情況是錯誤出現在前,而系統發現錯誤在後,因為它檢查到實際錯誤之後的某個地方,才能確認出了問題,因此報出錯誤信息。要確認第一個錯誤的原因,應該從系統指明的位置開始,在那裡檢查,並從那裡開始向前檢查。
系統的錯誤信息中都包含一段文字,說明它所認定的錯誤原因。應該仔細閱讀這段文字,通常它提供了有關錯誤的重要線索。但也應該理解,錯誤信息未必准確,有時錯誤確實存在,但系統對錯誤的解釋也可能不對。也就是說,在查找錯誤時,既要重視系統提供的錯誤信息,又不應為系統的錯誤信息所束縛。
發現了問題,要想清楚錯誤的真正原因,然後再修改。不要蠻干。在這時的最大誘惑就是想趕快改,看看錯誤會不會消失。但是蠻乾的結果常常是原來的錯誤沒有弄好,又搞出了新的錯誤。
另一個值得注意的地方:程序中的一個語法錯誤常常導致編譯系統產生許多錯誤信息。如果你改正了程序中一個或幾個錯誤,下面的弄不清楚了,那麼就應該重新編譯。改正一處常常能消去許多錯誤信息行。
解決語法錯誤
常見語法錯誤:
1)缺少語句、聲明、定義結束的分號。
2)某種括弧不配對。C語言中括弧性質的東西很多,列舉如下:
( ), [ ], { }, ' ', " ", /* */
在不同位置的括弧不配對可能引起許多不同的錯誤信息。
3)關鍵字拼寫錯誤。
較難認定的典型錯誤:
1)宏定義造成的錯誤。這種東西不能在源程序文件中直接看到,是在宏替換之後出現的。常見的能引起語法錯誤的宏定義錯誤:宏定義中有不配對的括弧,宏定義最後加了不該有的分號,……
解決上下文關系錯誤
1)變數沒有定義。產生這個問題的原因除了變數確實沒有大意外,還可能是變數的拼寫錯誤,變數的作用域問題(在不能使用某個變數的地方想去用那個變數)。
2)變數重復定義。例如在同一個作用域里用同樣名字定義了兩個變數,函數的局部變數與參數重名等。
3)函數的重復定義。可能是用同一個名字定義了兩個不同的函數。或者是寫出的函數原型在類型上與該函數的定義不相符。有時沒有原型而直接寫函數調用也可能導致這種錯誤信息,因為編譯程序在遇到函數調用而沒有看到函數原型或函數定義時,將給函數假定一個默認原型。如果後來見到的函數定義與假定不符,就會報告函數重復定義錯誤。
4)變數類型與有關運算對運算對象或者函數對參數的要求不符。例如有些運算(如 %)要求整數參數,而你用的是某種浮點數。
5)有些類型之間不能互相轉換。例如你定義了一個結構變數,而後要用它給整數賦值。系統容許的轉換包括:數值類型之間的轉換,整數和指針之間的轉換,指針之間的轉換。其餘轉換(無論是隱含的,還是寫出強制)都不允許。參見《C語言程序設計》(K&R)197-199頁。
如何看待編譯警告
當編譯程序發現程序中某個地方有疑問,可能有問題時就會給出一個警告信息。警告信息可能意味著程序中隱含的大錯誤,也可能確實沒有問題。對於警告的正確處理方式應該是:盡可能地消除之。對於編譯程序給出的每個警告都應該仔細分析,看看是否真的有問題。只有那些確實無問題的警告才能放下不管。
注意:經驗表明,警告常常意味著嚴重的隱含錯誤。
常見警告:
1)(局部自動)變數沒有初始化就使用。如果對局部指針變數出現這種情況,後果不堪設想。對於一般局部自動變數,沒有初始化就使用它的值也不會是有意義的。
2)在條件語句或循環語句的條件中寫了賦值。大部分情況是誤將 == (等於判斷)寫成 = 了。這是很常見的程序錯誤,有些編譯程序對這種情況提出警告。