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