溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言#define語法的定義和用法

發布時間:2021-09-04 09:39:51 來源:億速云 閱讀:495 作者:chen 欄目:互聯網科技

這篇文章主要講解了“C語言#define語法的定義和用法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C語言#define語法的定義和用法”吧!

#define的定義:

#define是C語言中的一個預處理指令,其中的“#”表示這是一條預處理命令·。凡是以“#”開頭的均為預處理命令,“define”為宏定義命令,“標識符”為所定義的宏名。

#define TIME_NUM  1000  //定義一個時間數

一個簡單的TIME_NUM 就定義好了,它代表1000,如果在程序里面寫:

if(i<TIME_NUM )
{
    ....
    ....
}

編譯器在處理這個代碼之前會對TIME_NUM 進行處理替換為1000。這樣的定義看起來類似于普通的常量定義CONST,但也有著不同,因為define的定義更像是簡單的文本替換,而不是作為一個量來使用。

#define的語法:

語法一:

#define      標識符    被標識符代表的字符串      //這種用法很簡單,就是一種替換.

語法二:

#define     標識符[(參數1,.....,參數n)]      被標識符代表的字符串        //其中,在 "被標識符代表的字符串" 中出現的形參將在使用時被實參替代. 就像寫函數一樣.

例如:

#define    ADD_NUM     10

也可以這樣子用:

#define    ADD(x,y)     (x+y)

這個定義就將返回兩個數中較大的那個,看到了嗎? 因為這個“函數”沒有類型檢查,就好像一個函數模板似的,當然,它絕對沒有模板那么安全就是了??梢宰鳛橐粋€簡單的模板來使用而已。 但是這樣做的話存在隱患,例子如下:

#define ADD(a,b)   a+b

在一般使用的時候是沒有問題的,但是如果遇到如:c * Add(a,b) * d的時候就會出現問題,代數式的本意是a+b然后去和c,d相乘,但是因為使用了define(它只是一個簡單的替換),所以式子實際上變成了  ca + bd 所以,用#define要注意順序

一般我個人用#define在單片機程序上的話,我一般只做簡單的替換。

#define TIME_NUM   (60*60*24)UL//定義一個一天時間有多少秒

另外舉一個例子:

#define pin (int*);
pin a,b;

本意是a和b都是int型指針,但是實際上變成int* a,b; a是int型指針,而b是int型變量。 這是應該使用typedef來代替define,這樣a和b就都是int型指針了。 所以我們在定義的時候,養成一個良好的習慣,建議所有的層次都要加括號。

而且,宏在單片機代碼中用的很多,常數的替換、地址的偏移,等等都用得上 用宏來修改移植代碼更加便捷,代碼更容易使人讀懂。。。。

感謝各位的閱讀,以上就是“C語言#define語法的定義和用法”的內容了,經過本文的學習后,相信大家對C語言#define語法的定義和用法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女