www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 公眾號精選 > 嵌入式微處理器
[導(dǎo)讀]寫好C語言,漂亮的宏定義很重要!使用宏定義可以防止出錯,提高可移植性,可讀性,方便性等。下面列舉了一些成熟軟件中常用的宏定義。1.防止一個頭文件被重復(fù)包含1#ifndef?COMDEF_H2#define?COMDEF_H3//頭文件內(nèi)容4#endif2.重新定義一些類型,防止由...


寫好C語言,漂亮的宏定義很重要!使用宏定義可以防止出錯,提高可移植性,可讀性,方便性等。下面列舉了一些成熟軟件中常用的宏定義。

1. 防止一個頭文件被重復(fù)包含

1#ifndef?COMDEF_H
2#define?COMDEF_H
3//頭文件內(nèi)容
4#endif

2. 重新定義一些類型,防止由于各種平臺和編譯器的不同,而產(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. 得到指定地址上的一個字節(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)?

5. 得到一個field在結(jié)構(gòu)體(struct)中的偏移量

1#define?FPOS(?type,?field?)?\
2/*lint?-e545?*/?(?(dword)?

嵌入式ARM

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

最近看到APP上,給我推送了很多類似的回答,借此機會,也想著重新審視一下自己的學(xué)習(xí)歷程,以及結(jié)合自身和大牛,分享一些學(xué)習(xí)經(jīng)驗,希望對大家有所啟發(fā)和幫助。

關(guān)鍵字: APP 嵌入式 C語言

SQLite是一個跨平臺的輕量級數(shù)據(jù)庫,支持C/C++開發(fā),可用于嵌入式中,關(guān)于C/C++使用SQLite的簡單實例,可參考這篇:“玩轉(zhuǎn)SQLite6:使用C語言來讀寫數(shù)據(jù)庫”,本篇來繼續(xù)介紹SQLite的基礎(chǔ)運算符與表...

關(guān)鍵字: SQLite C語言 數(shù)據(jù)庫

在計算機科學(xué)中,內(nèi)存泄漏指由于疏忽或錯誤造成程序未能釋放已經(jīng)不再使用的內(nèi)存。

關(guān)鍵字: C語言 內(nèi)存泄漏

C語言使用函數(shù)調(diào)用,我們再熟悉不過了,但是函數(shù)調(diào)用在內(nèi)存中究竟發(fā)生了什么真的清楚嗎?只有搞清楚內(nèi)存里的內(nèi)幕,才算完全搞懂函數(shù)的調(diào)用。

關(guān)鍵字: C語言 函數(shù)調(diào)用

有個粉絲關(guān)于條件編譯的問題,程序一直編譯報錯。我整理了關(guān)鍵的部分,下面代碼是頭文件中的定義。

關(guān)鍵字: 條件編譯 C語言

首先要看英文和C語言的關(guān)系,有多大層度是需要英文的支持。我們都知道C語言中一共有32個關(guān)鍵詞,控制語句僅有9種,也就是說只需要掌握以上內(nèi)容就可以對C語言進行應(yīng)用,對于一些復(fù)雜的指針等更合英文沒有關(guān)系。我相信短短的32個關(guān)...

關(guān)鍵字: C語言

C語言是一門面向過程的、抽象化的通用程序設(shè)計語言,廣泛應(yīng)用于底層開發(fā)。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產(chǎn)生少量的機器語言以及不需要任何運行環(huán)境支持便能運行的高效率程序設(shè)計語言。盡管C語言提供了許多低級...

關(guān)鍵字: C語言 單片機

為什么會寫篇棧變化的文章?做系統(tǒng)分析的話你肯定遇到過一些crash,oops等棘手問題,一般大家都會用gdb,objdump或者addr2line等工具分析pc位置來定位出錯的地方。但是這些分析工具背后的本質(zhì)原理就不見得...

關(guān)鍵字: 函數(shù) ARM C語言 AI

點擊藍字關(guān)注我們請把努力當成一種習(xí)慣,而不是三分鐘熱度。每一個你羨慕的收獲,都是努力用心拼來的。相信人生不會虧待你。12月6日華清遠見武漢中心迎來了嵌入式21111班的開班典禮班主任介紹班級班規(guī)無規(guī)矩不成方圓,班級班規(guī)的...

關(guān)鍵字: 嵌入式 C語言 LAN TARGET

一直覺得C語言較其他語言最偉大的地方就是C語言中的指針,有些人認為指針很簡單,而有些人認為指針很難,當然這里的對簡單和難并不是等價于對指針的理解程度。為此在這里對C語言中的指針進行全面的總結(jié),從底層的內(nèi)存分析,徹底讓讀者...

關(guān)鍵字: 微信 C語言 UNSIGNED INCLUDE

嵌入式微處理器

1170 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉