乙個大程式,通常分為多個模組,並由多個程式設計師分別程式設計。標頭檔案只要是文字檔案,檔名的字尾可以是任何合法的字尾名有了檔案包含處理功能,就可以將各個模組的資料(如符號常量和資料結構)或函式,集中到乙個單獨的標頭檔案中。
這樣,只要將所需檔案包含進來,即可使用其中資料或呼叫其中函式,不必再重複定義它們,從而減少重複勞動
當源程式中包含標頭檔案時,可以對其中包含的標頭檔案進行修改,但修改後必須對該源程式重新進行編譯連線
巨集命令行不是c語句
#include
《包含該庫函式的標頭檔案》
每乙個以#開頭的行稱為編譯預處理行
將stdio.h嵌入該行為作為源程式的一部分
輸出格式符:
%c :
char
%s : 字串 char
*%d : int
(十進位制)
%o : int
(八進位制)
%x : int
(十六進製制)
%u : int
(不帶符號十進位制)
%f : float
%lf :
double
%e: float
,double(指數形式)
其他:寬度限定(在%後加數字)
左對齊格式符(在%和數字之間加『-』)
#include
⒈ 余弦函式double cos(double x)
⒉ 正切函式double tan(double x)
⒊ 反余弦函式double acos(double x)
⒋ 平方根函式double sqrt(double x)
⒌ 指數函式double pow(double x,double y)
⒍ e的指數函式double exp(double x)
⒎ 絕對值函式double fabs(double x)
⒏ 以e為底的對數函式double log(double x)
⒐ 以10為底的對數函式double log10(double x)
c character classification functions
#include
⒈ 檢查字母、數字字元函式int isalnum(char)
isalnum(』\x20』) 為0,isalnum(』a』) 為非0;
⒉ 檢查字母函式int isalpha(char)
若為英文本母,返回非0(小寫字母為2,大寫字母為1)
若不是字母,返回0。
⒊ 檢查數字字元函式int isdigit(char)
⒋ 檢查可列印字元函式int isgraph(char)
⒌ 檢查小寫字母函式int islower(char)
⒍小寫字元轉換為大寫字元函式char toupper(char)
#include
1.隨機數發生器函式int rand( void )
2.初始化隨機數發生器函式voidsrand(unsigned)
3.終止程式執行函式void exit(int a)
乙個c程式由乙個或多個函式組成 必須包含main()函式
#define pi 3.1415926
/*pi的作用域*/
#undef pi
巨集定義tip:
「pi」 (無引號)
p i (無空格)
最好用capital letter
#define
《名字》 《值》
在c語言的編譯器開始編譯之前,編譯預處理程式(cpp)會把程式中的名字換成值
不占用執行時間
如果乙個巨集的值超過一行,最後一行之前的行末需要加
巨集值後面出現的注釋不會被當作巨集的值的一部分
#define _debug
沒有值的巨集
這類巨集是用於條件編譯的,後面有其他的編譯預處理指令來檢查這個巨集是否已經被定義過了
預定義的巨集
__line__
行數
__file__
檔名
__date__
日期
__time__
時間
__stdc__
#include
#include
intmain()
#define cube(x) ((x*(x)*(x))
括號問題
在替換帶引數的巨集命,圓括號必不可少
#include
#define radtodeg1(x) (x*57.29578)
#define radtodeg2(x) (x)*57.29578
intmain
(int argc,
char
const
* ar**)
執行實況 (5
+2*57.29578
)180/(
1)*57.29578
正確寫法
#define radtodeg(x) ((x)*57.29578)
帶引數的巨集
#define min(a,b) ((a)>(b)?(b):(a))
也可以組合(巢狀)使用其他巨集
分號?
#include
#define pretty_print(msg) printf(msg)
intmain()
}
編譯預處理
所謂編譯預處理,就是在c源程式的編譯之前,由編譯預處理程式對這些編譯預處理命令進行處理的過程。最常見的就是常量的替換。編譯預處理按功能可以分為巨集定義,檔案包含和條件編譯三類。編譯預處理命令以 開頭,下面進行詳細說明 一.巨集定義與符號常量 1.無參巨集定義 define 識別符號 字串 1 巨集名...
編譯預處理
1.巨集定義指令 1 定義變數與命令 避免幻數 在巨集定義命名時,盡量能清楚的表明功能,大寫 不能以 開頭易與內建巨集衝突 2 定義巨集函式 define max a,b a b a b int num max 6,5 6 5 6 5 用編譯時間換記憶體空間的是巨集函式 用記憶體空間換執行空間的是內...
編譯預處理
1 定義常量與命令 避免幻數 定義巨集時,避免以 開頭,以防與內建巨集定義衝突。巨集和列舉的區別 a.列舉常量是實體常量中的一種,但巨集不是實體 b.列舉常量屬於常量,但巨集不是常量 c.列舉常量具有型別,但巨集沒有型別。列舉型別主要用於限制性輸入,巨集只是預處理替換符 d.列舉只可以表示整型,巨集...