從c語言的define說開去

2021-06-21 03:53:30 字數 1063 閱讀 2248

在c語言中,define用作在預處理中將該模組(.c)中的所有的出現的巨集名都進行替換。 

(1)在define後面的#和##

在#define中,標準c只定義了#和##兩種操作。#用來把引數轉換成字串,##則用來連線前後兩個引數,把它們變成乙個字串。

#include

#define paster( n ) printf( "token " #n" = %d\n ", token##n )

intmain(intargc,char* argv )

(2)c語言允許巨集帶有引數。在巨集定義中的引數稱為形式引數,在巨集呼叫中的引數稱為實際引數 比如

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

(3)在微控制器c程式設計中,還會有其它類似的形式出現在.h檔案中,讓人感覺也有類似define的功能(以msp430的defc和defw為例)

注意:在msp430中有如下的擴充套件關鍵字

sfrb和sfrw 

是老的版本對功能暫存器的定義

defc 

是新的版本對功能暫存器的定義

實際上,只不過在標頭檔案中做了點手腳

#define defc(name, address) sfrb name = address;

#define defw(name, address) sfrw name = address;

#define defa(name, address) sfrl name = address;

所以,我們有下列表示:

#define tactl_              (0x0160u)  /* timer a control */

defw(   tactl             , tactl_)

實際上是前乙個為巨集定義,而第二個為定義乙個暫存器,給出了暫存器名和暫存器位址。



從PDF說開去

最近想研究一下pdf。pdf從ps脫胎而來,秉承ps強大的描述能力,以其精美的 效果,已幾乎成為internet時代的 標準文件格式 說pdf是 標準 可能有人不愛聽,見後文 如果軟體能夠支援自動輸出 匯出 為pdf格式文件,無疑軟體的專業化色彩會更濃一些。人之常理 你推出一種文件格式,使用的人 軟...

從時間說開去

非常羨慕那種需要很少睡眠,思維敏捷,做事雷厲風行的人。之所以羨慕,是因為我不具備。我做為乙個需要很多睡眠並且睡眠質量不高的人,做事也一般是三思而後行,遇事也慢人半拍,對於我這樣乙個人,怎樣合理安排時間就成了很大的問題。從小就喜歡利用一大片的時間,專注的去做一件事情。所以,在上了大學以後,看到我的同學...

從「盜版」說開去

發行了幾年的共享軟體 vb原始碼之友 終於被盜版了,雖然共享軟體沒有給我帶來讓人羨慕的財富,但是這幾年來也有不少的正版使用者群在默默的支援著我繼續推出我的軟體產品。我的心情其實很複雜,但卻沒有憤怒,在我腦中揮之不去的卻是 盜火 英雄普羅公尺修斯的偉大形象。想想看,如果不是盜版,作為普通的個人使用者,...