寫了 15 行代碼,編譯報錯竟然高達 1800 多行,這種奔潰的瞬間應(yīng)該有很多同學(xué)遇到過。
代碼分為兩塊,一個頭文件,一個源文件。
test.h
#ifndef TEST_H #define TEST_H #includesize_tlength(constchar*s) #endif
test.c
#include "test.h" #include#include #include #include int main() { printf("%d ", length("aa")); } size_t length(const char *s) { return strlen(s); }
開始編譯,當(dāng)敲下回車的那一刻,瞬間有點上頭,編譯報錯已經(jīng)超出了終端的范圍,一直往上翻到頭也沒找到編譯的命令。
我嘗試把錯誤定向到文件中,看了一下,有 1800 多行。
難怪很多初學(xué)者只需要半天時間從入門到放棄,這么多錯誤,根本無從下手。
先來大概分析下,提示的這些錯誤基本都是標(biāo)準(zhǔn)頭文件里面的錯誤,比如 stdio.h,很顯然,這是不可能的。
/usr/include/stdio.h:911:14: error: storage class specified for parameter ‘ctermid’ 911 | extern char *ctermid (char *__s) __THROW |
這個問題,一定是跟頭文件有關(guān),而且大概率是你寫的頭文件,影響了別人的頭文件,比如函數(shù)聲明的后面少了分號。
當(dāng) test.h 被展開的時候,由于函數(shù)聲明后面沒有加分號,導(dǎo)致其他被展開的頭文件都不合符語法要求,頭文件包含的越多,報錯也就越多。如果這個時候真的去標(biāo)準(zhǔn)頭文件里面找問題,基本就廢了。
編譯問題在C語言中應(yīng)該是最簡單的問題,現(xiàn)在的編譯器足夠智能,甚至能告訴你怎么修該。多寫代碼,遇到的多了,就能形成條件反射,看到問題,就能知道怎么修改。
-
代碼
+關(guān)注
關(guān)注
30文章
4886瀏覽量
70248 -
編譯
+關(guān)注
關(guān)注
0文章
676瀏覽量
33743
原文標(biāo)題:寫了15行代碼,編譯報錯1800多行
文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
打開FSP配置器界面的具體步驟

評論