天天看點

expected '=', ',', ';', 'asm' or '__attribute__' before

expected '=', ',', ';', 'asm' or '__attribute__' before expected ')' before

今天使用avr-gcc 4.3.3編譯程式出現一系列以上error,研究了半天都毫無所獲。這似乎是gcc下比較容易遇到的問題,以前也遇到過這種情況,但都沒有記錄、整理,是以今天遇到的時候又手足無措了。

經過在網上的瘋狂搜尋和結合自己程式的情況,我發現這是可能由多種原因引起的、比較模糊的錯誤提示,其所訓示的錯誤位置也一般都不正确。

錯誤提示看上去像是缺少某些符号引起的文法錯誤,然而實際上由未正确包含頭檔案引起的可能性比較大。在我的程式中僅僅是由于在C檔案中先包含了本檔案所對應的頭檔案,或包含了所依賴的庫檔案造成的。在網上搜尋的結果中也不乏頭檔案循環包含或根本未包含需要的頭檔案的原因。

這次吃一塹長一智,寫一個文章記錄一下并于大家分享。個人認為,這種問題可以通過書寫程式時的良好習慣加以避免。當然,對于這一問題,我還是沒有找到十分詳盡的原因分析,自己也隻是就自身的情況做一記錄,還希望對此有更多體會和研究的前輩指點。

【2014/05/03】  今天發現如果在聲明一個結構體類型(而非定義結構體類型的變量)時錯誤的對成員進行初始化,也會導緻類似的錯誤出現。