一、定義:
列:#define prine\
printf(「hello\n」)
1、巨集名通常要大寫
2、識別符號後一般不要加「;」防止出錯
3、當一行寫不下時可使用續行符(「\」),但續行符後不可輸入空格和注釋。
4、巨集的引數與型別無關,可以為任何型別
5、巨集相當於直接替換掉相關的**,執行速度快。
6、巨集定義中可以有其他的巨集定義,但不可出現遞迴造成死迴圈。
8、巨集的替換是在預處理時實現的,可以在linux環境中執行檢視
**例項解析:
//二進位制奇偶位交換
#include
#include
#define change(num)\
(((num&(0x55555555))<<1)|((num&(0xaaaaaaaa))>>1))//二進位制奇偶位交換
//0x5555 5555=0101 0101 0101 0101 0101 0101 0101 0101
//0xaaaa aaaa=1010 1010 1010 1010 1010 1010 1010 1010
int main()
num=change(num);
printf("\n改變后位為\n");
for(i=31;i>=0;i--)
system("pause");
return0;}
//求兩個數中最大數
#include
#include
#define max(num1,num2)\
(num1>num2 ? num1:num2)//求最大數
#define max1(num1,num2)\
((num1)>(num2)?(num1):(num2))
int main()
//其他相關應用
#include
#include
#define case break;//自動在case後加break;
#define square(x) x*x//計算兩數乘積
#define print(formate,value)\
printf("the value is "
#value " is " formate "\n",value)
//print與(之間不可有空格,'\'是續行符,但'\'後不可有輸入空格和注釋,#是將巨集引數轉變成字串
#define add_to_sum(num,value)\
sum##num=value;//##是合成符號,即將sum與num成在一起成num(num) 即num6=value
#define malloc(num,type)\
(type *)malloc (num*sizeof(type))//每次動態開闢num個type的型別空間,巨集可傳遞型別
int main()
system("pause");
return
0;}
# 3 "hong.c" 2
# 13 "hong.c"
int main()
system("pause");
return
0;}
在linux環境中可看預處理後的檔案
linux:常用命令
1、ll—–展開目錄
2、cd—————-開啟資料夾 列 cd linux
3、pwd ————-顯示路徑
4、cd..—————返回上一目錄
5、mkdir————建立資料夾 列 mkdir linux
6、touch————建立檔案 列 touch hong.c
7、gedit————-編寫** 列 gedit hong.c
8、gcc —————編譯 列 gcc hong.c
9、gcc -o——– –編譯自起生成檔名 列gcc hong.c -o myhong
10、./myhong———-執行myhong
11、gcc -e hong.c -o hong.i—–生成預處理檔案(-o 自起生成檔名)
12、gcc -s hong.c -o hong.s—-生成彙編檔案
13、gcc -c hong.c -o hong.o–生成二進位制檔案
14、gcc hong.o-o myhong—-鏈結
15、rm—————-刪除檔案 列 rm hong.c
16、vim—————顯示檔案內容 列 vim hong.c
例項 C語言巨集的使用之
include include include define beta beta define num beta 2 define gamma gamma define num gamma 3 define delta delta define num delta 4 define epsilon ...
常用巨集定義總結
今天,和一位oasis談了一些關於巨集定義的一些問題,頗有所得。特錄於此。起因是他看到open sourc中經常有這樣的原始碼,感覺無法理解 define swap a,b do while 0 總感覺這樣的定義中的do while有點蛇足的味道,感覺真的是沒有什麼必要。開始我也是這樣覺得的,因為是...
Objective C 巨集定義 總結
看了一篇講而立之年程式設計師失業的文章,觸動不小,看來以後還是要及時總結。以前總結的東西總是放在本地文件,管理起來不方便,還是老老實實寫部落格吧。使用 define 來定義 1.定義常量 define pi 3.14 巨集定義不要以 結尾 define say hello,there define ...