3.1 宏
- 宏定義
說明:
1)宏名一般用大寫,以便于與變數區別;
2)宏定義可以是常數、運算式等;
3)宏定義不作語法檢查,只有在編譯被宏展開后的源程式才會報錯;
4)宏定義不是C語言,不在行末加分號;
5)宏名有效范圍為從定義到本源檔案結束;
6)可以用#undef命令終止宏定義的作用域;
7)在宏定義中,可以參考已定義的宏名;
8)用括號括住每一個引數,并括住宏的整體定義,
宏常量
#define PI 3.14
特殊宏定義
__FILE__:宏所在檔案的源檔案名
__LINE__:宏所在行的行號
__DATE__:代碼編譯的日期
__TIME__:代碼編譯的時間
宏函式
#define MYADD(x,y) ((x)+(y))
/*
1)宏的名字中不能有空格,但是在替換的字串中可以有空格,ANSI C允許在引數串列中使用空格;
2)用括號括住每一個引數,并括住宏的整體定義,
3)用大寫字母表示宏的函式名,
4)如果打算宏代替函式來加快程式運行速度,假如在程式中只使用一次宏對程式的運行時間沒有太大提高,
*/
3.2 條件編譯
一般情況下,源程式中所有的行都參加編譯,但有時希望對部分源程式行只在滿足一定條件時才編譯,即對這部分源程式行指定編譯條件,
測驗存在
#define 識別符號
...
#ifdef 識別符號
程式段1
#else
程式段2
#endif
//舉個栗子
#define DEBUG
#ifdef DEBUG
void func()
{
printf("debug版本呼叫\n");
}
#else
void func()
{
printf("release版本呼叫\n");
}
#endif
- 測驗不存在
#define 識別符號
...
#ifndef 識別符號
程式段1
#else
程式段2
#endif
- 根據運算式定義
#if 運算式
程式段1
#else
程式段2
#endif
//舉個栗子
#if 1
void func()
{
printf("debug1版本呼叫\n");
}
#else
void func()
{
printf("debug2版本呼叫\n");
}
#endif
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/33472.html
標籤:C
上一篇:模板大全
下一篇:如何選擇好的變數名!
