練習1:啟用編譯器
原文:Exercise 1: Dust Off That Compiler
譯者:飛龍
這是你用C寫的第一個簡單的程式:
int main(int argc, char *argv[])
{
puts("Hello world.");
return 0;
}
把它寫進 ex1.c
並輸入:
$ make ex1
cc ex1.c -o ex1
你的編譯器可能會使用一個有些不同的命令,但是最後應該會產生一個名為ex1
的檔案,並且你可以執行它。
你會看到什麼
現在你可以執行程式並看到輸出。
$ ./ex1
Hello world.
如果沒有,則需要返回去修復它。
如何使它崩潰
在這本書中我會新增一個小節,關於如何使程式崩潰。我會讓你對程式做一些奇怪的事情,以奇怪的方式執行,或者修改程式碼,以便讓你看到崩潰和編譯器錯誤。
對於這個程式,開啟所有編譯警告重新構建它:
$ 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.
$
現在你會得到一個警告,說puts
函式是隱式宣告的。C語言的編譯器很智慧,它能夠理解你想要什麼。但是如果可以的話,你應該去除所有編譯器警告。把下面一行新增到ex1.c
檔案的最上面,之後重新編譯來去除它:
#include <stdio.h>
現在像剛才一樣重新執行make命令,你會看到所有警告都消失了。
附加題
-
在你的文字編輯器中開啟
ex1
檔案,隨機修改或刪除一部分,之後執行它看看發生了什麼。 -
再多列印5行文字或者其它比
"Hello world."
更復雜的東西。 -
執行
man 3 puts
來閱讀這個函式和其它函式的文件。