本節書摘來自華章出版社《c語言程式設計與實踐(第2版)》一書中的第2章,第2.4節,作者:淩雲等著,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視
例2-4中的程式把3.1415926、360、30等常數直接寫在了程式中,這并不是一種好的習慣,原因如下:
1)這些純粹的數沒有任何表征意義,幾乎不能給以後可能要閱讀該程式的人提供什麼資訊。
2)使程式的修改變得困難,因為如果修改角度上限和步長,必須修改程式中的所有360和30。
解決上述問題的一種方法是賦予它們有意義的名字。#define指令就用于把符号名字(或稱為符号常量)定義為一特定的字元串,其形式如下:
<code>#define 名字 替換文本</code>
此後,所有在程式中出現的在#define中定義的名字,如果該名字既沒有用引号括起來,也不是其他名字的一部分,都用所對應的替換文本替換。這裡的名字與普通變量名的形式相同:以字母開頭的字母或數字序列。替換文本可以是任何字元序列,而不僅限于數字。
例2-5 用符号常量列印餘弦函數的離散值表。
這裡,start、end、pi與step稱為符号常量,而不是變量,故不需要出現在定義中。這樣,如果需要提高函數曲線的拟合精度,就隻需要縮小step并給定更精确的pi值即可。符号常量名通常采用大寫字母,這樣就可以很容易地将其與采用小寫字母拼寫的變量名相差別。注意:#define也是一條編譯預處理指令,是以該行的末尾是沒有分号的。