巨集的例項總結

2021-08-09 21:27:22 字數 2293 閱讀 1566

一、定義:

列:#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 ...