在第二節(jié)講過(guò)的文件操作中,用到的FILE就是一個(gè)已被說(shuō)明的結(jié)構(gòu),其說(shuō)明如下:
typedef struct
{
short level;
unsigned flags;
char fd;
unsigned char hold;
short bsize;
unsigned char *buffer;
unsigned char *curp;
unsigned istemp;
short token;
} FILE
這個(gè)結(jié)構(gòu)說(shuō)明已包含在stdio.h中,用戶只要直接用FILE定義文件指針變量就可以。事實(shí)上,引入類型說(shuō)明的目的并非為了方便, 而是為了便于程序的移植。
預(yù)處理指令
由ANSI的標(biāo)準(zhǔn)規(guī)定,預(yù)處理指令主要包括:
#define
#error
#if
#else
#elif
#endif
#ifdef
#ifndef
#undef
#line
#pragma
由上述指令可以看出,每個(gè)預(yù)處理指令均帶有符號(hào)"#"。下面只介紹一些常用指令。
1.#define指令
#define指令是一個(gè)宏定義指令,定義的一般形式是:
#define 宏替換名字符串(或數(shù)值)
由#define指令定義后,在程序中每次遇到該宏替換名時(shí)就用所定義的字符串(或數(shù)值)代替它。
例如: 可用下面語(yǔ)句定義TRUE表示數(shù)值1, FALSE表示0。
#define TRUE 1
#define FALSE 0
一旦在源程序中使用了TRUE和FALSE,編譯時(shí)會(huì)自動(dòng)的用1和0代替。
注意:
1.在宏定義語(yǔ)名后沒(méi)有";"
2.在Turbo C程序中習(xí)慣上用大寫字符作為宏替換名,而且常放在程序開頭。
3.宏定義還有一個(gè)特點(diǎn), 就是宏替換名可以帶有形式參數(shù),在程序中用到時(shí),實(shí)際參數(shù)會(huì)代替這些形式參數(shù)。
例如:
#define MAX(x, y) (x>y)?x:y
main()
{
int i=10, j=15;
printf("The Maxmum is %d", MAX(i, j);
}
上例宏定義語(yǔ)句的含義是用宏替換名MAX(x,y)代替x,y中較大者,同樣也可定義:
#define MIN(x,y) (x 表示用宏替換名MIN(x,y)代替x,y中較小者。 2.#error指令 該指令用于程序的調(diào)試,當(dāng)編譯中遇到#error指令就停止編譯。其一般形式為: #error 出錯(cuò)信息 出錯(cuò)信息不加引號(hào),當(dāng)編譯器遇到這個(gè)指令時(shí),顯示下列信息并停止編譯。 Fatal: filename linename error directive 3.#include 指令 #include 指令的作用是指示編譯器將該指令所指出的另一個(gè)源文件嵌入#include指令所在的程序中,文件應(yīng)使用雙引號(hào)或尖括號(hào)括起來(lái)。Turbo C庫(kù)函數(shù)的頭文件一般用#include指令在程序開關(guān)說(shuō)明。 例如: #include 程序也允許嵌入其它文件,例如: main() { #include } 其中help.c為另一個(gè)文件, 內(nèi)容可為 printf("Glad to meet you here!"); 上例編譯時(shí)將按集成開發(fā)環(huán)境的Options/Directories/Include directories中指定的包含文件路徑查找被嵌入文件。 4.#if、#else、#endif指令 #if、#els和#endif指令為條件編擇指令,它的一般形式為: #if 常數(shù)表達(dá)式 語(yǔ)句段; #else 語(yǔ)句段; #endif 上述結(jié)構(gòu)的含義是:若#if指令后的常數(shù)表達(dá)式為真,則編譯#if到#else 之間的程序段;否則編譯#else到#endif之間的程序段。 例如: #define MAX 200 main() { #if MAX>999 printf("compiled for bigger\n"); #else printf("compiled for small\n"); #endif } 5.#undef指令 #undef指令用來(lái)刪除事先定義的宏定義,其一般形式為: #undef 宏替換名 例如: #define TRUE 1 ... #undef TURE #undef主要用來(lái)使宏替換名只限定在需要使用它們的程序段中。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |