⑴ 能解釋下編譯失敗的原因嗎
編譯失敗的原因有很多種。其中主要有以下一些類型:
(1)、用戶編寫的源程序中有語法錯誤。例如:未定義某一個變數就進行引用。這一類錯誤是最簡單的,也是編譯器最容易檢查出來的,所以會產生對源程序的編譯失敗;
(2)、用戶編寫的源程序中有未對變數進行初始化就進行引用,也會導致程序運行錯誤。例如:用戶雖然定義了一個指向某一個內存地址的指針變數,但是在使用前卻未對它進行初始化,並進行任何判斷,就往該指針指向的內存地址賦予了一個數值,這種情況在語法上編譯器是檢查不出來的,但是程序一旦運行起來,肯定就會出現錯誤了。在 WINDOWS 系統下一般是:指向XXXX的內存不能夠為 Read (或者為 Write),要是在 UNIX/Linux 系統下就會發生 Core Dumped。
(3)、數組越界。這類錯誤也是編譯器檢查不出來的,但是一旦程序運行起來,程序的運行結果可能就是一個隨機的結果。而不是用戶需要得到的結果。
所以從編譯的實質上說,以上情況都應該屬於編譯失敗的類型。因為編譯器並無法阻止這些錯誤的發生,而是讓程序在運行時發生了各種各樣的意想不到的運行結果。
⑵ 為什麼編譯正確的c++程序在運行時會停止工作
編譯正確只是表示程序已經沒有語法錯誤了,但是不一定程序的運行就沒有問題,比如內存讀寫錯誤,死循環之類的都可以導致運行時出錯。最好還是把源代碼貼出來,如果很小的話。
⑶ acm 提示CE編譯錯誤 是哪裡錯了
for(intj=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
swap++;
}
}
這里用到的t沒有定義,應該在前面某個地方定義t。
如果還是CE,那就看看是不是交錯語言了,例如選錯了GCC來提交。
如果遇到CE,用OJ的話,一般點擊它顯示的Compile Error是可以看到怎麼編譯錯誤的
⑷ 「絕大多數代碼是WA,少數代碼是CE,TLE和RE」,請問WA,CE,RE,都是什麼意思啊
Online Judge系統(簡稱OJ)是一個在線的判題系統。用戶可以在線提交程序多種程序(如C、C++)源代碼,系統對源代碼進行編譯和執行。
通過(Accepted,AC)、答案錯誤(Wrong Answer,WA)、超時(Time Limit Exceed,TLE)、超過輸出限制(Output Limit Exceed,OLE)、超內存(Memory Limit Exceed,MLE)、運行時錯誤(Runtime Error,RE)、格式錯誤(Presentation Error,PE)、無法編譯(Compile Error,CE)
⑸ 請問在用cheat engine也就是CE源代碼構建sys文件的時候,為什麼老是錯誤
是不是一直都出現這樣一個錯誤:1>link() : error LNK1181: cannot open input file 'objfre\i386\dbkdrvr.obj' ?
打開C:\WINDDK\7600.16385.0\bin\i386mk.inc 文件,在裡面查找「MSC_WARNING_LEVEL=$(MSC_WARNING_LEVEL) $(COMPILER_WX_SWITCH)」
這句代碼,找到後在它下面加一句:MSC_WARNING_LEVEL= /W1
加上後成這樣了:
MSC_WARNING_LEVEL=$(MSC_WARNING_LEVEL) $(COMPILER_WX_SWITCH)
MSC_WARNING_LEVEL= /W1
保存退出後再來編譯DLL,沒問題了,通過,原來是因為DDK警告警告級別太高了,降低了就沒事了,有可能裝英文版系統就沒警告了。
總結一下:
一、CE官網下載5.6.1源碼
二、下載WINDDK\7600.16385.0並安裝(其它高級版沒測試)
三、在DDK的i386mk.inc文件里加一句代碼:MSC_WARNING_LEVEL= /W1