編譯出錯的可能情況

2021-06-21 14:10:45 字數 813 閱讀 8298

編譯器的一部分工作是尋找程式文字中的錯誤。編譯器沒有能力檢查乙個程式是否

按照其作者的意圖工作,但可以檢查形式(form)上的錯誤。下面列出了一些最常見的

編譯器可以檢查出的錯誤。

語法錯誤(syntax error):程式設計師犯了c++語言文法上的錯誤。下面程式展示了一些常

見的語法錯誤;每條注釋描述了下一行中語句存在的錯誤:

// 錯誤:main 的引數列表漏掉了

int main (

型別錯誤(type error):c++中每個資料項都有其型別。例如,10 的型別是int(或者

更通俗地說,「10 是乙個int 型資料」)。單詞"hello",包括兩側的雙引號標記,則是一

個字串字面值常量。乙個型別錯誤的例子是,向乙個期望引數為int 的函式傳遞了

乙個字串字面值常量。

宣告錯誤(declaration error):c++程式中的每個名字都要先宣告後使用。名字宣告失敗

通常會導致一條錯誤資訊。兩種常見的宣告錯誤是:對來自標準庫的名字忘記使用

std::、識別符號名字拼寫錯誤:

#include

int main()

錯誤資訊通常包含乙個行號和一條簡短描述,描述了編譯器認為的我們所犯的錯

誤。按照報告的順序來逐個修正錯誤,是一種好習慣。因為乙個單個錯誤常常會具有傳

遞效應,導致編譯器在其後報告比實際數量多得多的錯誤資訊。另乙個好習慣是在每修

正乙個錯誤後就立即重新編譯**,或者最多是修正了一小部分明顯的錯誤後就重新編

譯。這就是所謂的「編輯-編譯-除錯」(edit-compile-debug)週期。

wireless tools編譯出錯

編譯wireless工具,彈出如下錯誤 root lqm wireless tools.29 make opt freescale usr local arm eabi 4.4.0 bin arm eabi gcc os w wall wstrict prototypes wmissing prot...

magent編譯出錯

編譯若出錯加 紅色字型 這是為什麼呢?libs levent cflags lm lrt wall o2 g cc gcc progs magent all progs stprog magent.o ketama.o ketama.o ketama.c ketama.h cc cflags inc...

交叉編譯出錯

root tim linux 2.6.29 make scripts kconfig conf s arch arm kconfig chk include linux version.h make 1 include asm arm mach types.h 是最新的。chk include li...