成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C語言中宏定義的盲區有哪些?

開發 后端
#define命令是C語言中的一個宏定義命令,它用來將一個標識符定義為一個字符串,該標識符被稱為宏名,被定義的字符串稱為替換文本。

1、概念

命令有兩種格式:一種是簡單的宏定義,另一種是帶參數的宏定義。

(1)   簡單的宏定義:

#define   <宏名> <字符串>  

#define VALUE  ((sizeof(a)) /sizeof(a[0]))

(2) 帶參數的宏定義  #define   <宏名> (<參數表>)   <宏體>

#define MAX(a,b) ((a)>(b)?(a):(b))

2、不能忽略宏定義中的空格

下面的宏定義中f是否帶了參數呢?

#define f (x) ((x)+1)

答案是否定的,在f與(x)之間存在一個空格,導致變成了如下定義。

#define  f   (x)((x)+1)

預處理程序對它不作任何檢查。如有錯誤,只能在編譯已被宏展開后的源程序時發現。

3、宏不是函數

如果我們定義一個宏:

#define  MAX(a,b)  a>b?a:b

當我們執行一個語句:

3+MAX(1,3);

我們期望的答案應該是6才對,其實呢,運行之后的答案1。與宏定義相掛鉤的就是優先級,算數運算符的優先級高于條件運算符,展開如下。

3+1>3?1:3,首先進行算符運算符的運算,即4>3?1:3,所以答案為1。

請注意宏定義中的括號,這些括號的作用就是預防引起優先級相關的問題。有些專家建議在C語言中只要牢記兩個優先級就夠了,乘除法優先級高于加減法,在設計其它操作符時,一律加上括號。

4、宏定義不是說明或語句,在行末不必加分號,如加上分號則連分號也一起置換

5、宏不是類型定義

首先定義一個宏

#define pChar char*

再用pChar 定義兩個變量,之后用操作符sizeof讀取變量所占用內存大小,如果是指針類型的就占4個字節,如果是字符型的就占1個字節。

結果占用空間不一樣,變量類型自然不一樣,所以宏定義不是類型定義。那如果我換成typedef來定義類型呢?

宏定義只是簡單的字符串代換,是在預處理完成的,而typedef是在編譯時處理的,它不是作簡單的代換,而是對類型說明符重新命名。被命名的標識符具有類型定義說明。

6、與之相關的宏定義

編寫程序過程中,很多都需要條件編譯,來看一個常用的使用方法。

#if defined(CREDIT)
credit();
#elif defined(DEBIT)
debit();
#else
printerror();
#endif

7、總結

宏的本質是代碼替換。

責任編輯:龐桂玉 來源: C語言與C++編程
相關推薦

2022-02-09 18:15:10

語言宏定義軟件

2023-10-26 11:03:50

C語言宏定義

2024-01-22 00:35:00

C++函數開發

2020-11-05 13:00:07

C語言編程語言

2024-01-05 08:31:08

C語言

2010-01-15 19:17:48

C++語言

2011-05-13 17:25:34

C

2022-01-06 14:25:24

C語言指針內存

2025-03-28 10:39:17

C++宏定義語言

2023-10-27 11:21:20

C語言Multics語言

2023-12-21 11:46:48

C語言柔性數組開發

2009-06-30 10:46:05

多級指針

2010-08-24 16:00:43

C語言

2022-07-27 16:40:25

C語言

2021-12-06 11:19:47

語言指針內存

2011-03-30 11:01:13

C語言隨機

2023-11-12 23:14:05

函數C 語言

2010-01-18 13:54:28

函數

2011-08-29 09:19:25

c語言

2023-12-29 08:27:36

C語言靜態變量開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天色综 | 亚洲国产成人精品女人久久久野战 | 中文字幕在线视频免费视频 | 久久精品国产精品青草 | 欧美日韩一区二区三区四区 | 国产91精品久久久久久久网曝门 | 日本又色又爽又黄的大片 | 国产九九精品 | 91精品国产91久久久久久 | 日韩一级免费看 | 久久国产成人精品国产成人亚洲 | 在线免费国产视频 | 黄色片在线 | 视频一区二区三区中文字幕 | 亚洲综合色丁香婷婷六月图片 | 精品美女在线观看视频在线观看 | h肉视频 | 亚洲精品中文字幕在线观看 | 亚洲视频在线观看一区二区三区 | 欧美在线视频一区二区 | 日本一区二区三区在线观看 | 91日韩 | 一级黄色影片在线观看 | 在线免费av观看 | 精品无码久久久久久国产 | 久久精品国产免费 | 91久久精 | 九九精品在线 | 涩涩鲁亚洲精品一区二区 | 久久久久久久久久久蜜桃 | 一区日韩 | 国产伦一区二区三区 | 99精品视频在线观看免费播放 | 国产成人精品久久 | 中文字幕国产精品视频 | 日本视频一区二区三区 | 一区二区三区网站 | 亚洲欧美日本国产 | 欧美黄视频 | 国产三区四区 | 日日噜噜噜夜夜爽爽狠狠视频97 |