麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

【學(xué)習(xí)筆記】【C語言】宏定義

2019-11-14 18:45:33
字體:
供稿:網(wǎng)友

1.宏定義可以分為2種:
不帶參數(shù)的宏定義
帶參數(shù)的宏定義

2.定義

一般形式
#define 宏名 字符串
比如  #define ABC 10
右邊的字符串也可以省略,比如#define ABC

3.作用

它的作用是在編譯預(yù)處理時(shí),將源程序中所有"宏名"替換成右邊的"字符串",常用來定義常量。
接下來寫個(gè)程序根據(jù)圓的半徑計(jì)算周長(zhǎng)

4.例子

在第4行定義了一個(gè)叫PI的宏,在編譯預(yù)處理之后,第8行中的2 * PI *radius就會(huì)變成2 * 3.14 * radius。

 1 #include <stdio.h> 2    3   // 源程序中所有的宏名PI在編譯預(yù)處理的時(shí)候都會(huì)被3.14所代替 4   #define PI 3.14 5  6  // 根據(jù)圓的半徑計(jì)radius算周長(zhǎng) 7  float girth(float radius) { 8     return 2 * PI *radius; 9 }10  11 int main ()12  {13 float g = girth(2);14     15 PRintf("周長(zhǎng)為:%f", g);16 return 0;17 }

5.注意

1> 宏名一般用大寫字母,以便與變量名區(qū)別開來,但用小寫也沒有語法錯(cuò)誤

2> 對(duì)程序中用雙引號(hào)擴(kuò)起來的字符串內(nèi)的字符,不進(jìn)行宏的替換操作。比如:

1 #define R 102  int main ()3  {4      char *s = "Radio";5      return 0;6  }

在第1行定義了一個(gè)叫R的宏,但是第4行中"Radio"里面的'R'并不會(huì)被替換成10

3> 在編譯預(yù)處理用字符串替換宏名時(shí),不作語法檢查,只是簡(jiǎn)單的字符串替換。只有在編譯的時(shí)候才對(duì)已經(jīng)展開宏名的源程序進(jìn)行語法檢查

1 #define I 1002  int main ()3  {4      int i[3] = I;5      return 0;6  }

4> 宏名的有效范圍是從定義位置到文件結(jié)束。如果需要終止宏定義的作用域,可以用#undef命令
#define PI 3.14
/*
 .
 .
 .
 .
 */
#undef PI
PI這個(gè)宏在第1行到第8行之間是有效的,第8行后就無效了

5> 定義一個(gè)宏時(shí)可以引用已經(jīng)定義的宏名
#define R  3.0
#define PI 3.14
#define L  2*PI*R
#define S  PI*R*R

6.代碼

 1 /* 2  1.所有的預(yù)處理指令都是以#開頭 3  2.預(yù)處理指令分3種 4  1> 宏定義 5  2> 條件編譯 6  3> 文件包含 7  3.預(yù)處理指令在代碼翻譯成0和1之前執(zhí)行 8  4.預(yù)處理的位置是隨便寫的 9  5.預(yù)處理指令的作用域:從編寫指令的那一行開始,一直到文件結(jié)尾,可以用#undef取消宏定義的作用10  6.宏名一般用大寫或者以k開頭,變量名一般用小寫11  */12 #include <stdio.h>13 14 15 //#define kCount 416 17 int main()18 {19     char *name = "COUNT";20     21     printf("%s/n", name);22     23     #define COUNT 424     25     int ages[COUNT] = {1, 2, 67, 89};26     27     28     29     for ( int i = 0; i<COUNT; i++) {30         printf("%d/n", ages[i]);31     }32     33     // 從這行開始,COUNT這個(gè)宏就失效34 #undef COUNT35     36     int a = COUNT;37     38     return 0;39 }40 41 void test()42 {43     44 }
 1 /* 2  1.帶參數(shù)的宏定義效率比函數(shù)高 3   4  */ 5  6 /* 7 int sum(int a, int b) 8 { 9     return a + b;10 }*/11 #include <stdio.h>12 13 #define sum(v1, v2) ((v1)+(v2))14 15 #define pingfang(a) ((a)*(a))16 17 int main()18 {19     // pingfang(5+5) (10*10)20     // pingfang(5+5)21     // pingfang(5+5) (35)22     // pingfang(5+5)/pingfang(2)23     int c = pingfang(5+5)/pingfang(2);24     25     printf("c is %d/n", c);26     /*27     int c = sum(2, 3) * sum(6, 4);28     29     printf("c is %d/n", c);*/30     /*31     int a = 10;32     33     int b = 20;34     35     36     int c = sum(a, b);37     38     printf("c is %d/n", c);39     //int c = sum(a, b);*/40     41     return 0;42 }

 

 
 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩欧美中文字幕视频 | 日韩黄在线观看 | 精品国产呦系列在线看 | wwwxxx视频| 成人免费一区二区三区在线观看 | 蜜桃网在线 | 在线观看国产 | 国产精品视频一区二区三区综合 | 亚洲成人久久精品 | 在线看91 | 欧美在线观看视频一区二区 | 最新se94se在线欧美 | 欧美精品v国产精品v日韩精品 | 天天鲁在线视频免费观看 | 成人午夜免费看 | 欧美精品18videos性欧美 | av在线免费在线观看 | 少妇一级淫片免费放播放 | 精品一区二区久久久 | 7777在线观看 | 欧美成人午夜一区二区三区 | 欧美一级一区二区三区 | 91福利影视 | 广州毛片 | 国产精品久久久久久久av | 九九黄色 | 黄色片网页 | 美国一级黄色毛片 | 特级毛片全部免费播放器 | 伦一区二区三区中文字幕v亚洲 | 99在线热播精品免费 | 国产精品视频自拍 | 日产精品久久久一区二区开放时间 | 精品国产一二区 | 久草在线最新 | 精品无吗乱吗av国产爱色 | 成人在线观看免费高清 | 国产羞羞视频免费在线观看 | 久久精品性视频 | 精品久久久久久久久久久久 | 天天色宗合 |