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