笨辦法學C 練習1:啟用編譯器

飛龍發表於2019-05-11

練習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來閱讀這個函式和其它函式的文件。

相關文章