日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 嵌入式大雜燴
[導讀]void 與 void*;volatile關鍵字 ;數(shù)據(jù)占用大小……

ID:嵌入式情報局 作者:情報小哥

1 void 與 void*

void表示的是無類型,不可以采用這個類型聲明變量或常量,但是可以把指針定義為void類型,如void* ptr。


void指針可以指向任意類型的數(shù)據(jù),可用任意數(shù)據(jù)類型的指針對void指針賦值,比如int *ptrInt;void *ptrVoid = ptrInt ;指針的賦值可以認為是地址的傳遞,而一般的32位系統(tǒng)指針都是占用4個字節(jié),所以指針賦值僅僅只是這4個字節(jié)的賦值與類型沒什么關系。



      1 void * memcpy( void *dest, const void *src, size_t len ); 2 void * memset( void * buffer, int c, size_t num);


2 volatile關鍵字

volatile修飾表示變量是易變的,編譯器中的優(yōu)化器在用到這個變量時必須每次都小心地從內存中重新讀取這個變量的值,而不是使用保存在寄存器里的備份,有效的防止編譯器自動優(yōu)化,從而與軟件設計相符合。




3 數(shù)據(jù)占用大小

數(shù)據(jù)占用大小是指不同的數(shù)據(jù)類型在平臺中所占用的字節(jié)個數(shù),不同的平臺不同類型占用的字節(jié)個數(shù)稍有不同,不過在對應的平臺進行開發(fā)過程中,必須要對每個數(shù)據(jù)類型的占用大小了如指掌,否則各種數(shù)據(jù)溢出,數(shù)據(jù)越界等等接踵而來。下面是簡單羅列的一些數(shù)據(jù)占用情況:(在一般32位PC中)



char 8bit
short 16bit
i n t 32bit
long 32bit
float 32bit
dou ble 64bit

4 const與指針

const是恒定不變的意思,與指針的結合主要的問題是其const在指針中的位置導致該變量屬性不同。主要的識別辦法是去掉數(shù)據(jù)類型,看const修飾的是哪部分。


const int *ptr --> const *ptr -->那么const修飾的就是*ptr,而*ptr表示的是指針所指向內容,所以其總體也叫"常量指針"表示值無法改變。


int *const ptr --> *const ptr -->那么const修飾的就是ptr,而ptr表示的是指針變量,指針變量的值就是地址,所以總體也叫"指針常量"表示地址無法改變。

5 結構體與共聯(lián)體

對于結構體和共聯(lián)體在嵌入式領域是使用得非常頻繁的,一些可編程芯片提供的寄存器庫都是采用結構體和共聯(lián)體結合的方式來提供給軟件人員進行開發(fā),同時在平時的編碼過程中這兩個數(shù)據(jù)類型的靈活應用也能夠實現(xiàn)代碼更好的封裝與簡化。 如下面的簡單示例,就可以非常靈活的訪問Val中的bit位。

          1typedef union  2{  3 BYTE Val;  4 struct __packed  5 {  6 BYTE b0: 1;  7 BYTE b1: 1;  8 BYTE b2: 1;  9 BYTE b3: 1; 10 BYTE b4: 1; 11 BYTE b5: 1; 12 BYTE b6: 1; 13 BYTE b7: 1; 14 } bits; 15}BYTE_VAL, BYTE_BITS;  

6 預定義標識符

一般編譯器都支持預定義標識符,這些標識符結合printf等打印信息幫助程序員調試程序是非常有用的,一般編譯器會自動根據(jù)用戶指定完成替換和處理。
如下是常用的標識: __FILE__  :表示進行編譯的源文件字符串; __LINE__ :表示當前文件的行號;
__DATE__:表示文件日期; __TIME__ :表示文件時間;
使用范例:

         1printf( "file:%s\n line:%d \n data:%s \n time: %s \n",__FILE__,__LINE__,__DATE__,__TIME__);




7 #與##

#:是一種運算符,用于帶參宏的文本替換,將跟在后面的參數(shù)轉成一個字符串常量。

##:是一種運算符,是將兩個運算對象連接在一起,也只能出現(xiàn)在帶參宏定義的文本替換中。


		

1#define STR(s) #s 2#define COMB(str1,str2) str1##str2 3int main() 4{ 5 int UART1= 57600; 6 printf("%d\n", COMB(UART, 1)); 7 printf("%s\n", STR(3.1415)); 8 return 0; 9}


2最后

這里小哥就總結了一些嵌入式C進階的一些要點, 希望能夠對你有幫助,Linux應用編程大全專輯還會繼續(xù)更新,中間會安插一些其他嵌入式知識作為緩沖,今天就分享到這里,下期精彩見!


免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

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

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉