[導(dǎo)讀]寫好C語(yǔ)言,漂亮的宏定義很重要!使用宏定義可以防止出錯(cuò),提高可移植性,可讀性,方便性等。下面列舉了一些成熟軟件中常用的宏定義。1.防止一個(gè)頭文件被重復(fù)包含1#ifndef?COMDEF_H2#define?COMDEF_H3//頭文件內(nèi)容4#endif2.重新定義一些類型,防止由...
寫好C語(yǔ)言,漂亮的宏定義很重要!使用宏定義可以防止出錯(cuò),提高可移植性,可讀性,方便性等。下面列舉了一些成熟軟件中常用的宏定義。
1. 防止一個(gè)頭文件被重復(fù)包含
1#ifndef?COMDEF_H
2#define?COMDEF_H
3//頭文件內(nèi)容
4#endif
2. 重新定義一些類型,防止由于各種平臺(tái)和編譯器的不同,而產(chǎn)生的類型字節(jié)數(shù)差異,方便移植。
1typedef?unsigned?char?boolean;?/*?Boolean?value?type.?*/
2typedef?unsigned?long?int?uint32;?/*?Unsigned?32?bit?value?*/
3typedef?unsigned?short?uint16;?/*?Unsigned?16?bit?value?*/
4typedef?unsigned?char?uint8;?/*?Unsigned?8?bit?value?*/
5typedef?signed?long?int?int32;?/*?Signed?32?bit?value?*/
6typedef?signed?short?int16;?/*?Signed?16?bit?value?*/
7typedef?signed?char?int8;?/*?Signed?8?bit?value?*/
不建議使用: 1typedef?unsigned?char?byte;?/*?Unsigned?8?bit?value?type.?*/
2typedef?unsigned?short?word;?/*?Unsinged?16?bit?value?type.?*/
3typedef?unsigned?long?dword;?/*?Unsigned?32?bit?value?type.?*/
4typedef?unsigned?char?uint1;?/*?Unsigned?8?bit?value?type.?*/
5typedef?unsigned?short?uint2;?/*?Unsigned?16?bit?value?type.?*/
6typedef?unsigned?long?uint4;?/*?Unsigned?32?bit?value?type.?*/
7typedef?signed?char?int1;?/*?Signed?8?bit?value?type.?*/
8typedef?signed?short?int2;?/*?Signed?16?bit?value?type.?*/
9typedef?long?int?int4;?/*?Signed?32?bit?value?type.?*/
10typedef?signed?long?sint31;?/*?Signed?32?bit?value?*/
11typedef?signed?short?sint15;?/*?Signed?16?bit?value?*/
12typedef?signed?char?sint7;?/*?Signed?8?bit?value?*/
3. 得到指定地址上的一個(gè)字節(jié)或字
1#define?MEM_B(?x?)?(?*(?(byte?*)?(x)?)?)
2#define?MEM_W(?x?)?(?*(?(word?*)?(x)?)?)
4. 求最大值和最小值
1#define?MAX(?x,?y?)?(?((x)?>?(y))???(x)?:?(y)?)
2#define?MIN(?x,?y?)?(?((x)?(y))???(x)?:?(y)?)
5. 得到一個(gè)field在結(jié)構(gòu)體(struct)中的偏移量
1#define?FPOS(?type,?field?)?\
2/*lint?-e545?*/?(?(dword)?
欲知詳情,請(qǐng)下載word文檔
下載文檔
掃描二維碼,關(guān)注更多精彩內(nèi)容
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
最近看到APP上,給我推送了很多類似的回答,借此機(jī)會(huì),也想著重新審視一下自己的學(xué)習(xí)歷程,以及結(jié)合自身和大牛,分享一些學(xué)習(xí)經(jīng)驗(yàn),希望對(duì)大家有所啟發(fā)和幫助。
關(guān)鍵字:
APP
嵌入式
C語(yǔ)言
SQLite是一個(gè)跨平臺(tái)的輕量級(jí)數(shù)據(jù)庫(kù),支持C/C++開(kāi)發(fā),可用于嵌入式中,關(guān)于C/C++使用SQLite的簡(jiǎn)單實(shí)例,可參考這篇:“玩轉(zhuǎn)SQLite6:使用C語(yǔ)言來(lái)讀寫數(shù)據(jù)庫(kù)”,本篇來(lái)繼續(xù)介紹SQLite的基礎(chǔ)運(yùn)算符與表...
關(guān)鍵字:
SQLite
C語(yǔ)言
數(shù)據(jù)庫(kù)
在計(jì)算機(jī)科學(xué)中,內(nèi)存泄漏指由于疏忽或錯(cuò)誤造成程序未能釋放已經(jīng)不再使用的內(nèi)存。
關(guān)鍵字:
C語(yǔ)言
內(nèi)存泄漏
C語(yǔ)言使用函數(shù)調(diào)用,我們?cè)偈煜げ贿^(guò)了,但是函數(shù)調(diào)用在內(nèi)存中究竟發(fā)生了什么真的清楚嗎?只有搞清楚內(nèi)存里的內(nèi)幕,才算完全搞懂函數(shù)的調(diào)用。
關(guān)鍵字:
C語(yǔ)言
函數(shù)調(diào)用
有個(gè)粉絲關(guān)于條件編譯的問(wèn)題,程序一直編譯報(bào)錯(cuò)。我整理了關(guān)鍵的部分,下面代碼是頭文件中的定義。
關(guān)鍵字:
條件編譯
C語(yǔ)言
首先要看英文和C語(yǔ)言的關(guān)系,有多大層度是需要英文的支持。我們都知道C語(yǔ)言中一共有32個(gè)關(guān)鍵詞,控制語(yǔ)句僅有9種,也就是說(shuō)只需要掌握以上內(nèi)容就可以對(duì)C語(yǔ)言進(jìn)行應(yīng)用,對(duì)于一些復(fù)雜的指針等更合英文沒(méi)有關(guān)系。我相信短短的32個(gè)關(guān)...
關(guān)鍵字:
C語(yǔ)言
C語(yǔ)言是一門面向過(guò)程的、抽象化的通用程序設(shè)計(jì)語(yǔ)言,廣泛應(yīng)用于底層開(kāi)發(fā)。C語(yǔ)言能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器。C語(yǔ)言是僅產(chǎn)生少量的機(jī)器語(yǔ)言以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的高效率程序設(shè)計(jì)語(yǔ)言。盡管C語(yǔ)言提供了許多低級(jí)...
關(guān)鍵字:
C語(yǔ)言
單片機(jī)
為什么會(huì)寫篇棧變化的文章?做系統(tǒng)分析的話你肯定遇到過(guò)一些crash,oops等棘手問(wèn)題,一般大家都會(huì)用gdb,objdump或者addr2line等工具分析pc位置來(lái)定位出錯(cuò)的地方。但是這些分析工具背后的本質(zhì)原理就不見(jiàn)得...
關(guān)鍵字:
函數(shù)
ARM
C語(yǔ)言
AI
點(diǎn)擊藍(lán)字關(guān)注我們請(qǐng)把努力當(dāng)成一種習(xí)慣,而不是三分鐘熱度。每一個(gè)你羨慕的收獲,都是努力用心拼來(lái)的。相信人生不會(huì)虧待你。12月6日華清遠(yuǎn)見(jiàn)武漢中心迎來(lái)了嵌入式21111班的開(kāi)班典禮班主任介紹班級(jí)班規(guī)無(wú)規(guī)矩不成方圓,班級(jí)班規(guī)的...
關(guān)鍵字:
嵌入式
C語(yǔ)言
LAN
TARGET
一直覺(jué)得C語(yǔ)言較其他語(yǔ)言最偉大的地方就是C語(yǔ)言中的指針,有些人認(rèn)為指針很簡(jiǎn)單,而有些人認(rèn)為指針很難,當(dāng)然這里的對(duì)簡(jiǎn)單和難并不是等價(jià)于對(duì)指針的理解程度。為此在這里對(duì)C語(yǔ)言中的指針進(jìn)行全面的總結(jié),從底層的內(nèi)存分析,徹底讓讀者...
關(guān)鍵字:
微信
C語(yǔ)言
UNSIGNED
INCLUDE
提到C語(yǔ)言,很多人的第一反應(yīng)是:C語(yǔ)言,不都過(guò)時(shí)了?還有必要研究嗎??當(dāng)然有必要。用一個(gè)詞來(lái)形容:C生萬(wàn)物。聽(tīng)起來(lái)有點(diǎn)浮夸,但也沒(méi)說(shuō)錯(cuò)?,F(xiàn)今這個(gè)世界上,幾乎所有重要的軟件都跟C有關(guān)系:?主流操作系統(tǒng)是C寫的,絕大多數(shù)語(yǔ)言...
關(guān)鍵字:
C語(yǔ)言
▼點(diǎn)擊下方名片,關(guān)注公眾號(hào)▼歡迎關(guān)注【玩轉(zhuǎn)單片機(jī)與嵌入式】公眾號(hào),回復(fù)關(guān)鍵字獲取更多免費(fèi)資料。回復(fù)【加群】,限時(shí)免費(fèi)進(jìn)入知識(shí)共享群;回復(fù)【3D封裝庫(kù)】,常用元器件的3D封裝庫(kù);回復(fù)【電容】,獲取電容、元器件選型相關(guān)的內(nèi)容...
關(guān)鍵字:
C語(yǔ)言
▼點(diǎn)擊下方名片,關(guān)注公眾號(hào)▼歡迎關(guān)注【玩轉(zhuǎn)單片機(jī)與嵌入式】公眾號(hào),回復(fù)關(guān)鍵字獲取更多免費(fèi)資料?;貜?fù)【加群】,限時(shí)免費(fèi)進(jìn)入知識(shí)共享群;回復(fù)【3D封裝庫(kù)】,常用元器件的3D封裝庫(kù);回復(fù)【電容】,獲取電容、元器件選型相關(guān)的內(nèi)容...
關(guān)鍵字:
C語(yǔ)言
軟件
c語(yǔ)言入門C語(yǔ)言一經(jīng)出現(xiàn)就以其功能豐富、表達(dá)能力強(qiáng)、靈活方便、應(yīng)用面廣等特點(diǎn)迅速在全世界普及和推廣。C語(yǔ)言不但執(zhí)行效率高而且可移植性好,可以用來(lái)開(kāi)發(fā)應(yīng)用軟件、驅(qū)動(dòng)、操作系統(tǒng)等。C語(yǔ)言也是其它眾多高級(jí)語(yǔ)言的鼻祖語(yǔ)言,所以說(shuō)...
關(guān)鍵字:
C語(yǔ)言
星標(biāo)「嵌入式大雜燴」,一起進(jìn)步!進(jìn)度條的應(yīng)用在軟件中無(wú)處不在,拷貝一個(gè)文件需要一個(gè)進(jìn)度條,加載一個(gè)文件也需要一個(gè)進(jìn)度條,來(lái)標(biāo)志完成與否。那么,一個(gè)進(jìn)度條有哪些元素呢:一個(gè)不斷向右生長(zhǎng)的容器(直觀的看出當(dāng)前的進(jìn)度)一個(gè)數(shù)據(jù)...
關(guān)鍵字:
C語(yǔ)言
所謂的數(shù)組越界,簡(jiǎn)單地講就是指數(shù)組下標(biāo)變量的取值超過(guò)了初始定義時(shí)的大小,導(dǎo)致對(duì)數(shù)組元素的訪問(wèn)出現(xiàn)在數(shù)組的范圍之外,這類錯(cuò)誤也是C語(yǔ)言程序中最常見(jiàn)的錯(cuò)誤之一。在C語(yǔ)言中,數(shù)組必須是靜態(tài)的。換而言之,數(shù)組的大小必須在程序運(yùn)行...
關(guān)鍵字:
C語(yǔ)言
一、C語(yǔ)言的共用體union共用體是一種特殊的數(shù)據(jù)類型,允許您在相同的內(nèi)存位置存儲(chǔ)不同的數(shù)據(jù)類型。什么意思呢,就是在同一塊內(nèi)存存儲(chǔ)可以定義多個(gè)數(shù)據(jù)類型,但是在使用的時(shí)候,只有一個(gè)變量有效。這里就有一個(gè)問(wèn)題,變量有大有小呀...
關(guān)鍵字:
C語(yǔ)言
存儲(chǔ)空間
寫好C語(yǔ)言,漂亮的宏定義很重要,使用宏定義可以防止出錯(cuò),提高可移植性,可讀性,方便性等等。下面列舉一些成熟軟件中常用的宏定義。1.防止一個(gè)頭文件被重復(fù)包含1#ifndef?COMDEF_H2#define?COMDEF_...
關(guān)鍵字:
C語(yǔ)言
01—默認(rèn)字節(jié)對(duì)齊C語(yǔ)言結(jié)構(gòu)體字節(jié)對(duì)齊是老生常談的問(wèn)題了,也是高頻面試題,現(xiàn)在我們來(lái)深入研究這個(gè)問(wèn)題,徹底弄懂到底是怎么回事,給你一個(gè)結(jié)構(gòu)體定義和平臺(tái)機(jī)器位數(shù)就能手動(dòng)計(jì)算出結(jié)構(gòu)體占用字節(jié)數(shù),現(xiàn)在我們不使用宏#pragma...
關(guān)鍵字:
C語(yǔ)言
數(shù)字信號(hào)處理是將信號(hào)以數(shù)字方式表示并處理的理論和技術(shù)。數(shù)字信號(hào)處理與模擬信號(hào)處理是信號(hào)處理的子集。數(shù)字信號(hào)處理的目的是對(duì)真實(shí)世界的連續(xù)模擬信號(hào)進(jìn)行測(cè)量或?yàn)V波。因此在進(jìn)行數(shù)字信號(hào)處理之前需要將信號(hào)從模擬域轉(zhuǎn)換到數(shù)字域,這通...
關(guān)鍵字:
DSP
PC機(jī)
C語(yǔ)言