導航:首頁 > 源碼編譯 > 編譯報錯定位不對

編譯報錯定位不對

發布時間:2022-04-20 04:36:23

❶ 如何快速查找C語言編譯時的錯誤

1、首先,我們啟動編譯軟體程序,今天我們以VC++6.0為例。

注意事項:

編譯語言是一種以編譯器來實現的編程語言。它不像直譯語言一樣,由解釋器將代碼一句一句運行,而是以編譯器,先將代碼編譯為機器碼,再加以運行。理論上,任何編程語言都可以是編譯式,或直譯式的。它們之間的區別,僅與程序的應用有關。

❷ 按f8 提示編譯錯誤:無效或不合格的引用 錯誤定位到.close

Columns.Count,這在任何一個Sheet都是一樣的數值,沒必要前面加「.」非要指定到某一個Sheet。 不過,雖然去掉「.」,對結果無影響,但加上報錯,說明代碼可能還是有問題;請把完整的代碼貼上來看一下。不知前面的With語句使用的對象是否正確。

❸ c語言編譯出錯,怎麼查找錯誤出在哪行

步驟:

1.打開源代碼文件,在控制台里查看錯誤類型。

❹ omron plc Cx-p編程軟體中的長時間定時器TIML指令編寫後經編譯顯示定位錯誤是什麼意思,請高手指點,急!

就是你的那個定時器放的位置不對

❺ 程序編譯錯誤不知道是什麼原因

不能通編譯過的程序實際上還不是合法的程序,因為它不滿足C語言對於程序的基本要求。

檢查語法錯誤的第一要義:集中力量檢查系統發現的第一個錯誤,弄清並改正它。

在編譯過程中系統發現的錯誤主要有兩類:基本語法錯誤和上下文關系錯誤。這些錯誤都在表面上,可以直接看得見。也是比較容易弄清,比較容易解決的。關鍵是需要熟悉C語言的語法規定和有關上下文關系的規定,按照這些規定檢查程序正文,看看存在什麼問題。

編譯中系統發現錯誤都能指出錯誤的位置。不同系統在這方面的能力有差異,在錯誤定位的准確性方面有所不同。有的系統只能指明發現錯誤的行,有的系統還能夠指明行內位置。

一般說,系統指明的位置未必是真實錯誤出現的位置。通常情況是錯誤出現在前,而系統發現錯誤在後,因為它檢查到實際錯誤之後的某個地方,才能確認出了問題,因此報出錯誤信息。要確認第一個錯誤的原因,應該從系統指明的位置開始,在那裡檢查,並從那裡開始向前檢查。

系統的錯誤信息中都包含一段文字,說明它所認定的錯誤原因。應該仔細閱讀這段文字,通常它提供了有關錯誤的重要線索。但也應該理解,錯誤信息未必准確,有時錯誤確實存在,但系統對錯誤的解釋也可能不對。也就是說,在查找錯誤時,既要重視系統提供的錯誤信息,又不應為系統的錯誤信息所束縛。

發現了問題,要想清楚錯誤的真正原因,然後再修改。不要蠻干。在這時的最大誘惑就是想趕快改,看看錯誤會不會消失。但是蠻乾的結果常常是原來的錯誤沒有弄好,又搞出了新的錯誤。

另一個值得注意的地方:程序中的一個語法錯誤常常導致編譯系統產生許多錯誤信息。如果你改正了程序中一個或幾個錯誤,下面的弄不清楚了,那麼就應該重新編譯。改正一處常常能消去許多錯誤信息行。

解決語法錯誤

常見語法錯誤:

1)缺少語句、聲明、定義結束的分號。

2)某種括弧不配對。C語言中括弧性質的東西很多,列舉如下:
( ), [ ], { }, ' ', " ", /* */
在不同位置的括弧不配對可能引起許多不同的錯誤信息。

3)關鍵字拼寫錯誤。

較難認定的典型錯誤:

1)宏定義造成的錯誤。這種東西不能在源程序文件中直接看到,是在宏替換之後出現的。常見的能引起語法錯誤的宏定義錯誤:宏定義中有不配對的括弧,宏定義最後加了不該有的分號,……

解決上下文關系錯誤

1)變數沒有定義。產生這個問題的原因除了變數確實沒有大意外,還可能是變數的拼寫錯誤,變數的作用域問題(在不能使用某個變數的地方想去用那個變數)。

2)變數重復定義。例如在同一個作用域里用同樣名字定義了兩個變數,函數的局部變數與參數重名等。

3)函數的重復定義。可能是用同一個名字定義了兩個不同的函數。或者是寫出的函數原型在類型上與該函數的定義不相符。有時沒有原型而直接寫函數調用也可能導致這種錯誤信息,因為編譯程序在遇到函數調用而沒有看到函數原型或函數定義時,將給函數假定一個默認原型。如果後來見到的函數定義與假定不符,就會報告函數重復定義錯誤。

4)變數類型與有關運算對運算對象或者函數對參數的要求不符。例如有些運算(如 %)要求整數參數,而你用的是某種浮點數。

5)有些類型之間不能互相轉換。例如你定義了一個結構變數,而後要用它給整數賦值。系統容許的轉換包括:數值類型之間的轉換,整數和指針之間的轉換,指針之間的轉換。其餘轉換(無論是隱含的,還是寫出強制)都不允許。參見《C語言程序設計》(K&R)197-199頁。

如何看待編譯警告

當編譯程序發現程序中某個地方有疑問,可能有問題時就會給出一個警告信息。警告信息可能意味著程序中隱含的大錯誤,也可能確實沒有問題。對於警告的正確處理方式應該是:盡可能地消除之。對於編譯程序給出的每個警告都應該仔細分析,看看是否真的有問題。只有那些確實無問題的警告才能放下不管。

注意:經驗表明,警告常常意味著嚴重的隱含錯誤。

常見警告:

1)(局部自動)變數沒有初始化就使用。如果對局部指針變數出現這種情況,後果不堪設想。對於一般局部自動變數,沒有初始化就使用它的值也不會是有意義的。

2)在條件語句或循環語句的條件中寫了賦值。大部分情況是誤將 == (等於判斷)寫成 = 了。這是很常見的程序錯誤,有些編譯程序對這種情況提出警告。

❻ 使用vc編C++的程序,提示出錯時,怎樣快速找到錯誤位置

如果是簡單的錯誤,可以直接雙擊錯誤列表裡的錯誤項或者生成輸出的錯誤信息中帶行號的地方就可以讓編輯窗口定位到錯誤的位置上。
對於復雜的模板錯誤,最好使用生成輸出窗口。多數情況下出發錯誤的位置是最靠後的引用位置。如果這樣確定不了錯誤,就需要先把自己寫的代碼里的引用位置找出來,然後逐個分析了。
C++的模板錯誤雖然往往會有很多行的輸出,但其實是一個整體,有時候必須整體分析。這個並沒有很完全的捷徑可走。只能在使用中不斷積累經驗。或者你可以嘗試先使用clang++之類錯誤輸出更清晰的編譯器。如果一定要使用VC++的話,盡量使用最新的版本,因為微軟在這方面也一直在改進。

❼ C++編譯失敗報錯很奇怪,沒說錯誤在哪兒,怎麼解決源代碼和報錯信息如下。

這個是linux下面的c++編譯對嗎,它跟掛載屬性inode64有關系。比較老的交叉編譯器,只支持32位inode的文件訪問,當遇到超過4294967295的文件,就會編譯出錯並提示:Value too large for defined data type。
那麼解決方案就有兩種:
Ø 升級交叉編譯器版本,讓其支持inode64的源文件。
Ø 交叉編譯器版本不變,將文件系統掛載屬性從inode64改為inode32。

❽ 請教:怎麼看懂並處理java編譯錯誤

告訴你一個常見且最簡單的新手解決方案,就是 從上而下的看打出的日誌,找到第一個 是你自己所創建的文件路徑 比如 com.you.test 的類報
的錯,點擊後面的連接就可以定位到錯誤發生的位置,在根據開頭報的錯誤。加入報 null point空指針異常,則是你定位錯誤的位置發生了空指針。那
你給它初始化就解決了。 不知道你明白了不

❾ VC++6.0中寫入程序,編譯後提示有一錯誤,1 error(s)怎麼簡單的指出錯誤的所在之處呢,以便修改

編譯出現錯誤,直接按F4,即可定位各錯誤行。

1、首先,進行打開一個需要進行調試的代碼,進行再當前來進行編輯。


❿ VC++6.0無法定位錯誤行

明顯這段代碼就不少錯誤了
printf(dddd); 改成 printf("dddd");
a、b、c都沒定義,即使有定義,a+b=c這樣寫也是不正確的
編譯直接按ctrl + F5吧

閱讀全文

與編譯報錯定位不對相關的資料

熱點內容
幾歲可以學單片機 瀏覽:24
分時圖操盤手指標源碼 瀏覽:147
怎麼把伺服器里的地圖保存起來 瀏覽:859
程序員的綠卡 瀏覽:511
壓縮avi會聲會影9 瀏覽:260
程序員晉升自薦信 瀏覽:602
域伺服器如何添加計算機 瀏覽:927
aix查找命令 瀏覽:140
pdf抗日戰爭 瀏覽:430
安卓手機如何將抖音投屏到電視 瀏覽:142
安卓皮皮蟹音樂怎麼保存本地 瀏覽:698
牆柱箍筋加密區要求 瀏覽:108
為什麼知乎app看不到圖片 瀏覽:971
tb軟體一維數組求和源碼 瀏覽:14
蘋果手機丟了如何用安卓機找回 瀏覽:895
如何把word轉換成pdf文檔 瀏覽:216
useradd命令linux 瀏覽:578
語言編程源碼分析 瀏覽:276
溫10怎麼設計加密文件 瀏覽:452
python源碼保護資料庫密碼 瀏覽:992