天天看點

define定義的函數如何引用_C語言快速入門——使用#define讓程式更易維護#define隻是替換

與變量在運作時可以通過指派操作更改這一特性不同,常量是一種在程式執行過程中,其值不發生改變的量。我們目前介紹了int、float、char三種資料類型,與它們相對應的常量分别為整型常量、浮點常量、字元常量。我們已經在程式中大量的使用了這些類型的常量,如字面數值5、字元'a'、小數3.1415等。在使用printf函數輸出一條消息時,如 "Hello, World!"時,這樣的消息稱為常量字元串。

#define

在數組的例子中,我們已經看到,直接使用一個字面常量使得程式後期維護比較困難,數組大小的改變,會引起多處變動。為此,我們可以使用符号常量來減輕這種負擔。

符号常量是指用一個辨別符代表一個常量,(回想一下變量,變量在程式的上下文中是用一個名稱來辨別引用,變量的名稱就是辨別符,常量與此同理。)在使用之前必須先定義,這是使用#define來完成的。

文法:#define 辨別符 常量

常量辨別符通常使用大寫規則,如下面代碼中的ARRAY_SIZE。

define定義的函數如何引用_C語言快速入門——使用#define讓程式更易維護#define隻是替換

符号常量具有一次定義多次複用、一次修改多處關聯自動更新的特性,同時也使程式有了更好的可讀性。現在我們使用了ARRAY_SIZE常量來維護數組的大小,當數組大小發生變化時,除去數組元素必須變動之外,其餘的關聯操作都不必再做改變了。

隻是替換

#define是一條預處理指令。預處理,即預先處理的意思,通常是在編譯程式前由預處理器對程式檔案進行的一種先決處理。C語言中預處理指令都以"#"開頭,結束并不包含分号,因為它不是語句。(希望你能想起#include,它也是哦)。預處理指令實際上隻是對值進行簡單的替換。上面的程式在程式編譯期間,ia[ARRAY_SIZE]會被替換為ia[7],也就是說ARRAY_SIZE最終都會被7所代替。

這個程式使用了極端的方式示範了#define作為替換的本領,并模仿有些程式設計語言使用BEGIN/END來表示語句組。當然,在實際的開發過程中不要這麼做,過渡的包裝會使程式難以閱讀維護,并造成調試上的不便。語言是讓我們優雅的交流,而不是更多的制造障礙。

define定義的函數如何引用_C語言快速入門——使用#define讓程式更易維護#define隻是替換