練習(xí)1:啟用編譯器
譯者:飛龍
這是你用C寫的第一個簡單的程序:
int main(int argc, char *argv[])
{
puts("Hello world.");
return 0;
}
把它寫進(jìn) ex1.c
并輸入:
$ make ex1
cc ex1.c -o ex1
你的編譯器可能會使用一個有些不同的命令,但是最后應(yīng)該會產(chǎn)生一個名為ex1
的文件,并且你可以運(yùn)行它。
你會看到什么
現(xiàn)在你可以運(yùn)行程序并看到輸出。
$ ./ex1
Hello world.
如果沒有,則需要返回去修復(fù)它。
如何使它崩潰
在這本書中我會添加一個小節(jié),關(guān)于如何使程序崩潰。我會讓你對程序做一些奇怪的事情,以奇怪的方式運(yùn)行,或者修改代碼,以便讓你看到崩潰和編譯器錯誤。
對于這個程序,打開所有編譯警告重新構(gòu)建它:
$ rm ex1
$ CFLAGS="-Wall" make ex1
cc -Wall ex1.c -o ex1
ex1.c: In function 'main':
ex1.c:3: warning: implicit declaration of function 'puts'
$ ./ex1
Hello world.
$
現(xiàn)在你會得到一個警告,說puts
函數(shù)是隱式聲明的。C語言的編譯器很智能,它能夠理解你想要什么。但是如果可以的話,你應(yīng)該去除所有編譯器警告。把下面一行添加到ex1.c
文件的最上面,之后重新編譯來去除它:
#include <stdio.h>
現(xiàn)在像剛才一樣重新執(zhí)行make命令,你會看到所有警告都消失了。
附加題
- 在你的文本編輯器中打開
ex1
文件,隨機(jī)修改或刪除一部分,之后運(yùn)行它看看發(fā)生了什么。 - 再多打印5行文本或者其它比
"Hello world."
更復(fù)雜的東西。 - 執(zhí)行
man 3 puts
來閱讀這個函數(shù)和其它函數(shù)的文檔。