在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式C語言非常常用的關(guān)鍵字

GReq_mcu168 ? 來源:未知 ? 作者:胡薇 ? 2018-06-27 15:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.static關(guān)鍵字

這個(gè)關(guān)鍵字前面也有提到,它的作用是強(qiáng)大的。

要對static關(guān)鍵字深入了解,首先需要掌握標(biāo)準(zhǔn)C程序的組成。

標(biāo)準(zhǔn)C程序一直由下列部分組成:

1)正文段——CPU執(zhí)行的機(jī)器指令部分,也就是你的程序。一個(gè)程序只有一個(gè)副本;只讀,這是為了防止程序由于意外事故而修改自身指令;

2)初始化數(shù)據(jù)段(數(shù)據(jù)段)——在程序中所有賦了初值的全局變量,存放在這里。

3)非初始化數(shù)據(jù)段(bss段)——在程序中沒有初始化的全局變量;內(nèi)核將此段初始化為0。

注意:只有全局變量被分配到數(shù)據(jù)段中。

4)棧——增長方向:自頂向下增長;自動(dòng)變量以及每次函數(shù)調(diào)用時(shí)所需要保存的信息(返回地址;環(huán)境信息)。這句很關(guān)鍵,常常有筆試題會(huì)問到什么東西放到棧里面就足以說明。

5)堆——?jiǎng)討B(tài)存儲(chǔ)分配。

嵌入式C語言當(dāng)中,它有三個(gè)作用:

作用一:在函數(shù)體,一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變。

這樣定義的變量稱為局部靜態(tài)變量:在局部變量之前加上關(guān)鍵字static,局部變量就被定義成為一個(gè)局部靜態(tài)變量。也就是上面的作用一中提到的在函數(shù)體內(nèi)定義的變量。除了類型符外,若不加其它關(guān)鍵字修飾,默認(rèn)都是局部變量。比如以下代碼:

void test1(void)

{

unsigned char a;

static unsigned char b;

a++;

b++;

}

在這個(gè)例子中,變量a是局部變量,變量b為局部靜態(tài)變量。作用一說明了局部靜態(tài)變量b的特性:在函數(shù)體,一個(gè)被聲明為靜態(tài)的變量(也就是局部靜態(tài)變量)在這一函數(shù)被調(diào)用過程中維持其值不變。這句話什么意思呢?若是連續(xù)兩次調(diào)用上面的函數(shù)test1:

void main(void)

{

test1();

test1();

}

然后使程序暫停下來,讀取a和b的值,你會(huì)發(fā)現(xiàn),a=1,b=2。怎么回事呢,每次調(diào)用test1函數(shù),局部變量a都會(huì)重新初始化為0x00;然后執(zhí)行a++;而局部靜態(tài)變量在調(diào)用過程中卻能維持其值不變。

通常利用這個(gè)特性可以統(tǒng)計(jì)一個(gè)函數(shù)被調(diào)用的次數(shù)。

聲明函數(shù)的一個(gè)局部變量,并設(shè)為static類型,作為一個(gè)計(jì)數(shù)器,這樣函數(shù)每次被調(diào)用的時(shí)候就可以進(jìn)行計(jì)數(shù)。這是統(tǒng)計(jì)函數(shù)被調(diào)用次數(shù)的最好的辦法,因?yàn)檫@個(gè)變量是和函數(shù)息息相關(guān)的,而函數(shù)可能在多個(gè)不同的地方被調(diào)用,所以從調(diào)用者的角度來統(tǒng)計(jì)比較困難。代碼如下:void count();int main(){ int i; for (i = 1; i <= 3; i++)

{ count();

{ return 0;}void count(){ static num = 0; num++; printf(" I have been called %d",num,"times/n");}

輸出結(jié)果為:I have been called 1 times.I have been called 2 times.I have been called 3 times.

看一下局部靜態(tài)變量的詳細(xì)特性,注意它的作用域。

1)內(nèi)存中的位置:靜態(tài)存儲(chǔ)區(qū)

2)初始化:未經(jīng)初始化的全局靜態(tài)變量會(huì)被程序自動(dòng)初始化為0(自動(dòng)對象的值是任意的,除非他被顯示初始化)

3)作用域:作用域仍為局部作用域,當(dāng)定義它的函數(shù)或者語句塊結(jié)束的時(shí)候,作用域隨之結(jié)束。

注:當(dāng)static用來修飾局部變量的時(shí)候,它就改變了局部變量的存儲(chǔ)位置,從原來的棧中存放改為靜態(tài)存儲(chǔ)區(qū)。但是局部靜態(tài)變量在離開作用域之后,并沒有被銷毀,而是仍然駐留在內(nèi)存當(dāng)中,直到程序結(jié)束,只不過我們不能再對他進(jìn)行訪問。

作用二:在模塊內(nèi)(但在函數(shù)體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個(gè)本地的全局變量。

這樣定義的變量也稱為全局靜態(tài)變量:在全局變量之前加上關(guān)鍵字static,全局變量就被定義成為一個(gè)全局靜態(tài)變量。也就是上述作用二中提到的在模塊內(nèi)(但在函數(shù)體外)聲明的靜態(tài)變量。

定義全局靜態(tài)變量的好處:

<1>不會(huì)被其他文件所訪問,修改,是一個(gè)本地的局部變量。

<2>其他文件中可以使用相同名字的變量,不會(huì)發(fā)生沖突。

全局變量的詳細(xì)特性,注意作用域,可以和局部靜態(tài)變量相比較:

1)內(nèi)存中的位置:靜態(tài)存儲(chǔ)區(qū)(靜態(tài)存儲(chǔ)區(qū)在整個(gè)程序運(yùn)行期間都存在)

2)初始化:未經(jīng)初始化的全局靜態(tài)變量會(huì)被程序自動(dòng)初始化為0(自動(dòng)對象的值是任意的,除非他被顯示初始化)

3)作用域:全局靜態(tài)變量在聲明他的文件之外是不可見的。準(zhǔn)確地講從定義之處開始到文件結(jié)尾。

當(dāng)static用來修飾全局變量的時(shí)候,它就改變了全局變量的作用域(在聲明他的文件之外是不可見的),但是沒有改變它的存放位置,還是在靜態(tài)存儲(chǔ)區(qū)中。

作用三:在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。

這樣定義的函數(shù)也成為靜態(tài)函數(shù):在函數(shù)的返回類型前加上關(guān)鍵字static,函數(shù)就被定義成為靜態(tài)函數(shù)。函數(shù)的定義和聲明默認(rèn)情況下是extern的,但靜態(tài)函數(shù)只是在聲明他的文件當(dāng)中可見,不能被其他文件所用。

定義靜態(tài)函數(shù)的好處:

<1> 其他文件中可以定義相同名字的函數(shù),不會(huì)發(fā)生沖突

<2> 靜態(tài)函數(shù)不能被其他文件所用。它定義一個(gè)本地的函數(shù)。

這里我一直強(qiáng)調(diào)數(shù)據(jù)和函數(shù)的本地化,這對于程序的結(jié)構(gòu)甚至優(yōu)化都有巨大的好處,更大的作用是,本地化的數(shù)據(jù)和函數(shù)能給人傳遞很多有用的信息,能約束數(shù)據(jù)和函數(shù)的作用范圍。在C++的對象和類中非常注重的私有和公共數(shù)據(jù)/函數(shù)其實(shí)就是本地和全局?jǐn)?shù)據(jù)/函數(shù)的擴(kuò)展,這也從側(cè)面反應(yīng)了本地化數(shù)據(jù)/函數(shù)的優(yōu)勢。

最后說一下存儲(chǔ)說明符,在標(biāo)準(zhǔn)C語言中,存儲(chǔ)說明符有以下幾類:

auto、register、extern和static

對應(yīng)兩種存儲(chǔ)期:自動(dòng)存儲(chǔ)期和靜態(tài)存儲(chǔ)期。auto和register對應(yīng)自動(dòng)存儲(chǔ)期。具有自動(dòng)存儲(chǔ)期的變量在進(jìn)入聲明該變量的程序塊時(shí)被建立,它在該程序塊活動(dòng)時(shí)存在,退出該程序塊時(shí)撤銷。

關(guān)鍵字extern和static用來說明具有靜態(tài)存儲(chǔ)期的變量和函數(shù)。用static聲明的局部變量具有靜態(tài)存儲(chǔ)持續(xù)期(static storage duration),或靜態(tài)范圍(static extent)。雖然他的值在函數(shù)調(diào)用之間保持有效,但是其名字的可視性仍限制在其局部域內(nèi)。靜態(tài)局部對象在程序執(zhí)行到該對象的聲明處時(shí)被首次初始化。

2. const關(guān)鍵字

const關(guān)鍵字也是一個(gè)優(yōu)秀程序中經(jīng)常用到的關(guān)鍵字。關(guān)鍵字const 的作用是為給讀你代碼的人傳達(dá)非常有用的信息,實(shí)際上,聲明一個(gè)參數(shù)為常量是為了告訴了用戶這個(gè)參數(shù)的應(yīng)用目的。通過給優(yōu)化器一些附加的信息,使用關(guān)鍵字const 也許能產(chǎn)生更緊湊的代碼。合理地使用關(guān)鍵字const 可以使編譯器很自然地保護(hù)那些不希望被改變的參數(shù),防止其被無意的代碼修改。簡而言之,這樣可以減少bug的出現(xiàn)。

深入理解const關(guān)鍵字,你必須知道:

a. const關(guān)鍵字修飾的變量可以認(rèn)為有只讀屬性,但它絕不與常量劃等號(hào)。如下代碼:

const int i=5;

int j=0;

...

i=j; //非法,導(dǎo)致編譯錯(cuò)誤,因?yàn)橹荒鼙蛔x

j=i; //合法

b. const關(guān)鍵字修飾的變量在聲明時(shí)必須進(jìn)行初始化。如下代碼:

const int i=5; //合法

const int j; //非法,導(dǎo)致編譯錯(cuò)誤

c. 用const聲明的變量雖然增加了分配空間,但是可以保證類型安全。const最初是從C++變化得來的,它可以替代define來定義常量。在舊版本(標(biāo)準(zhǔn)前)的c中,如果想建立一個(gè)常量,必須使用預(yù)處理器:#define PI 3.14159

此后無論在何處使用PI,都會(huì)被預(yù)處理器以3.14159替代。編譯器不對PI進(jìn)行類型檢查,也就是說可以不受限制的建立宏并用它來替代值,如果使用不慎,很可能由預(yù)處理引入錯(cuò)誤,這些錯(cuò)誤往往很難發(fā)現(xiàn)。而且,我們也不能得到PI的地址(即不能向PI傳遞指針和引用)。const的出現(xiàn),比較好的解決了上述問題。

d. C標(biāo)準(zhǔn)中,const定義的常量是全局的。

e. 必須明白下面語句的含義,我自己是反復(fù)記憶了許久才記住,方法是:若是想定義一個(gè)只讀屬性的指針,那么關(guān)鍵字const要放到‘* ’后面。

char *const cp; //指針不可改變,但指向的內(nèi)容可以改變

char const *pc1; //指針可以改變,但指向的內(nèi)容不能改變

const char *pc2; //同上(后兩個(gè)聲明是等同的)

f. 將函數(shù)傳入?yún)?shù)聲明為const,以指明使用這種參數(shù)僅僅是為了效率的原因,而不是想讓調(diào)用函數(shù)能夠修改對象的值。

參數(shù)const通常用于參數(shù)為指針或引用的情況,且只能修飾輸入?yún)?shù);若輸入?yún)?shù)采用“值傳遞”方式,由于函數(shù)將自動(dòng)產(chǎn)生臨時(shí)變量用于復(fù)制該參數(shù),該參數(shù)本就不需要保護(hù),所以不用const修飾。例子:

void fun0(const int * a );

void fun1(const int & a);

調(diào)用函數(shù)的時(shí)候,用相應(yīng)的變量初始化const常量,則在函數(shù)體中,按照const所修飾的部分進(jìn)行常量化,如形參為const int * a,則不能對傳遞進(jìn)來的指針?biāo)赶虻膬?nèi)容進(jìn)行改變,保護(hù)了原指針?biāo)赶虻膬?nèi)容;如形參為const int & a,則不能對傳遞進(jìn)來的引用對象進(jìn)行改變,保護(hù)了原對象的屬性。

g. 修飾函數(shù)返回值,可以阻止用戶修改返回值。(在嵌入式C中一般不用,主要用于C++)

h. const消除了預(yù)處理器的值替代的不良影響,并且提供了良好的類型檢查形式和安全性,在可能的地方盡可能的使用const對我們的編程有很大的幫助,前提是:你對const有了足夠的理解。

最后,舉兩個(gè)常用的標(biāo)準(zhǔn)C庫函數(shù)聲明,它們都是使用const的典范。

1.字符串拷貝函數(shù):char *strcpy(char *strDest,const char *strSrc);

2.返回字符串長度函數(shù):int strlen(const char *str);

3.volatile關(guān)鍵字

一個(gè)定義為volatile 的變量是說這變量可能會(huì)被意想不到地改變,這樣,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了。精確地說就是,優(yōu)化器在用到這個(gè)變量時(shí)必須每次都小心地重新讀取這個(gè)變量的值,而不是使用保存在寄存器里的備份。

由于訪問寄存器的速度要快過RAM,所以編譯器一般都會(huì)作減少存取外部RAM的優(yōu)化。比如:

static int i=0;int main(void){...while (1){if (i)dosomething();}}/* Interrupt service routine. */void ISR_2(void){ i=1;} 程序的本意是希望ISR_2中斷產(chǎn)生時(shí),在main當(dāng)中調(diào)用dosomething函數(shù),但是,由于編譯器判斷在main函數(shù)里面沒有修改過i,因此可能只執(zhí)行一次對從i到某寄存器的讀操作,然后每次if判斷都只使用這個(gè)寄存器里面的“i副本”,導(dǎo)致dosomething永遠(yuǎn)也不會(huì)被調(diào)用。如果將將變量加上volatile修飾,則編譯器保證對此變量的讀寫操作都不會(huì)被優(yōu)化(肯定執(zhí)行)。此例中i也應(yīng)該如此說明。一般說來,volatile用在如下的幾個(gè)地方:1、中斷服務(wù)程序中修改的供其它程序檢測的變量需要加volatile;2、多任務(wù)環(huán)境下各任務(wù)間共享的標(biāo)志應(yīng)該加volatile;3、存儲(chǔ)器映射的硬件寄存器通常也要加volatile說明,因?yàn)槊看螌λ淖x寫都可能有不同意義;

不懂得volatile 的內(nèi)容將會(huì)帶來災(zāi)難,這也是區(qū)分C語言和嵌入式C語言程序員的一個(gè)關(guān)鍵因素。為強(qiáng)調(diào)volatile的重要性,再次舉例分析:

代碼一:

int a,b,c;

//讀取I/O空間0x100端口的內(nèi)容

a= inword(0x100);

b=a;

a=inword(0x100)

c=a;

代碼二:

volatile int a;

int a,b,c;

//讀取I/O空間0x100端口的內(nèi)容

a= inword(0x100);

b=a;

a=inword(0x100)

c=a;

在上述例子中,代碼一會(huì)被絕大多數(shù)編譯器優(yōu)化為如下代碼:

a=inword(0x100)

b=a;

c=a;

這顯然與編寫者的目的不相符,會(huì)出現(xiàn)I/O空間0x100端口漏讀現(xiàn)象,若是增加volatile,像代碼二所示的那樣,優(yōu)化器將不會(huì)優(yōu)化掉任何代碼.

從上面來看,volatile關(guān)鍵字是會(huì)降低編譯器優(yōu)化力度的,但它保證了程序的正確性,所以在適合的地方使用關(guān)鍵字volatile是件考驗(yàn)編程功底的事情.

4.struct與typedef關(guān)鍵字

面對一個(gè)人的大型C/C++程序時(shí),只看其對struct的使用情況我們就可以對其編寫者的編程經(jīng)驗(yàn)進(jìn)行評(píng)估。因?yàn)橐粋€(gè)大型的C/C++程序,勢必要涉及一些(甚至大量)進(jìn)行數(shù)據(jù)組合的結(jié)構(gòu)體,這些結(jié)構(gòu)體可以將原本意義屬于一個(gè)整體的數(shù)據(jù)組合在一起。從某種程度上來說,會(huì)不會(huì)用struct,怎樣用struct是區(qū)別一個(gè)開發(fā)人員是否具備豐富開發(fā)經(jīng)歷的標(biāo)志。

在網(wǎng)絡(luò)協(xié)議、通信控制、嵌入式系統(tǒng)的C/C++編程中,我們經(jīng)常要傳送的不是簡單的字節(jié)流(char型數(shù)組),而是多種數(shù)據(jù)組合起來的一個(gè)整體,其表現(xiàn)形式是一個(gè)結(jié)構(gòu)體。

經(jīng)驗(yàn)不足的開發(fā)人員往往將所有需要傳送的內(nèi)容依順序保存在char型數(shù)組中,通過指針偏移的方法傳送網(wǎng)絡(luò)報(bào)文等信息。這樣做編程復(fù)雜,易出錯(cuò),而且一旦控制方式及通信協(xié)議有所變化,程序就要進(jìn)行非常細(xì)致的修改。

用法:

在C中定義一個(gè)結(jié)構(gòu)體類型要用typedef:typedef struct Student{ int a;}Stu;于是在聲明變量的時(shí)候就可:Stu stu1;如果沒有typedef就必須用struct Student stu1;來聲明這里的Stu實(shí)際上就是struct Student的別名。另外這里也可以不寫Student(于是也不能struct Student stu1;了)typedef struct{ int a;}Stu;

struct關(guān)鍵字的一個(gè)總要作用是它可以實(shí)現(xiàn)對數(shù)據(jù)的封裝,有一點(diǎn)點(diǎn)類似與C++的對象,可以將一些分散的特性對象化,這在編寫某些復(fù)雜程序時(shí)提供很大的方便性.

比如編寫一個(gè)菜單程序,你要知道本級(jí)菜單的菜單索引號(hào)、焦點(diǎn)在屏上是第幾項(xiàng)、顯示第一項(xiàng)對應(yīng)的菜單條目索引、菜單文本內(nèi)容、子菜單索引、當(dāng)前菜單執(zhí)行的功能操作。若是對上述條目單獨(dú)操作,那么程序的復(fù)雜程度將會(huì)大到不可想象,若是菜單層數(shù)少些還容易實(shí)現(xiàn),一旦菜單層數(shù)超出四層,呃~我就沒法形容了。若是有編寫過菜單程序的朋友或許理解很深。這時(shí)候結(jié)構(gòu)體struct就開始顯現(xiàn)它的威力了:

//結(jié)構(gòu)體定義

typedef struct

{

unsigned char CurrentPanel;//本級(jí)菜單的菜單索引號(hào)

unsigned char ItemStartDisplay; //顯示第一項(xiàng)對應(yīng)的菜單條目索引

unsigned char FocusLine; //焦點(diǎn)在屏上是第幾項(xiàng)

}Menu_Statestruct;

typedef struct

{

unsigned char *MenuTxt; //菜單文本內(nèi)容

unsigned char MenuChildID;//子菜單索引

void (*CurrentOperate)();//當(dāng)前菜單執(zhí)行的功能操作

}MenuItemStruct;

typedef struct

{

MenuItemStruct *MenuPanelItem;

unsigned char MenuItemCount;

}MenuPanelStruct;

這里引用我鞏師兄所寫的菜單程序中的結(jié)構(gòu)體定義,這個(gè)菜單程序最大可以到256級(jí)菜單。我當(dāng)初要寫一個(gè)菜單程序之前,并沒有對結(jié)構(gòu)體了解多少,也沒有想到使用結(jié)構(gòu)體。只是一層層菜單的單獨(dú)處理:如果按鍵按下,判斷是哪個(gè)按鍵,調(diào)用對應(yīng)按鍵的子程序,刷屏顯示。這樣處理起來每一層都要判斷當(dāng)前的光標(biāo)所在行,計(jì)算是不是在顯示屏的頂層,是不是在顯示層的底層,是不是需要翻頁等等,非常的繁瑣。后來在網(wǎng)上找資料,就找到了我?guī)熜志帉懙倪@個(gè)程序,開始并不知道是他寫的,在看源程序的時(shí)候看到了作者署名:中國傳惠 TranSmart,才知道是他。花了一天的時(shí)間閱讀代碼和移植,才知道結(jié)構(gòu)體原來有這么個(gè)妙用,當(dāng)定義了上述三個(gè)結(jié)構(gòu)體之后,菜單程序結(jié)構(gòu)立刻變的簡單很多,思路也無比的清晰起來。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7631

    瀏覽量

    141145
  • static
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    10668

原文標(biāo)題:嵌入式C語言不可不用的關(guān)鍵字

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語言面試最常問的關(guān)鍵字

    大家好,我是嵌入式老林,從事嵌入式軟件開發(fā)多年,今天分享的內(nèi)容是C語言面試最常問的三個(gè)關(guān)鍵字,希望能對你有所幫助。
    發(fā)表于 07-11 12:41 ?609次閱讀

    嵌入式軟件編程中關(guān)鍵字的用法和原理

    青島職業(yè)技術(shù)學(xué)院劉浩山東省文登市澤頭鎮(zhèn)***張斌引言計(jì)算機(jī)編程語言關(guān)鍵字就好比是它的靈魂,只有深入理解了它們的含義才能編寫出優(yōu)秀的代碼。C語言以其簡潔、高效和強(qiáng)大等特性成為
    發(fā)表于 06-20 07:37

    Volatile關(guān)鍵字對于嵌入式開發(fā)有什么作用呢

    前言在進(jìn)行嵌入式開發(fā)中,我們往往會(huì)看到一個(gè)名為volatile或者_(dá)_IO的關(guān)鍵字,那么,它們對于嵌入式開發(fā)有什么作用呢?淺析volatile數(shù)據(jù)類型實(shí)際上,__IO和volatile是相同的
    發(fā)表于 11-05 09:20

    推薦一篇大佬寫的嵌入式C語言知識(shí)點(diǎn)總結(jié)

    熟知硬件特性和缺陷,還需要對編譯原理和計(jì)算機(jī)技術(shù)知識(shí)有著一定的了解。本文以嵌入式實(shí)踐為基礎(chǔ),再結(jié)合相關(guān)資料, 闡述嵌入式需要了解的C語言知識(shí)和重點(diǎn),希望每個(gè)讀到這篇文章的人都能有所收獲
    發(fā)表于 12-14 08:09

    怎么做好嵌入式

    熟知硬件特性和缺陷,還需要對編譯原理和計(jì)算機(jī)技術(shù)知識(shí)有著一定的了解。本文以嵌入式實(shí)踐為基礎(chǔ),再結(jié)合相關(guān)資料, 闡述嵌入式需要了解的C語言知識(shí)和重點(diǎn),希望每個(gè)讀到這篇文章的人都能有所收獲
    發(fā)表于 12-15 09:21

    嵌入式程序員常見的const、static、volatile關(guān)鍵字

    嵌入式程序員const、static、volatile三個(gè)關(guān)鍵字的樸素認(rèn)識(shí)摘要:在C語言程序編寫中,const、static關(guān)鍵字是比較熟悉
    發(fā)表于 12-21 06:08

    嵌入式C語言的知識(shí)點(diǎn)匯總,絕對實(shí)用

    了一些這方面的經(jīng)驗(yàn)和思考,就希望總結(jié)下來,系統(tǒng)的闡述嵌入式C語言的重要知識(shí)點(diǎn),就是這篇文章的由來。本文以自己在嵌入式上的實(shí)踐為基礎(chǔ),在結(jié)合相關(guān)資料, 闡述
    發(fā)表于 02-17 06:10

    嵌入式C語言進(jìn)階之道

    C 語言的書有一大堆,嵌入 C 語言的書也不少,但都不過是簡單介紹一下標(biāo)準(zhǔn) C
    發(fā)表于 04-19 10:15

    單片機(jī)C語言中常用到的關(guān)鍵字及數(shù)據(jù)類型

    單片機(jī)C語言中常用到的關(guān)鍵字及數(shù)據(jù)類型。
    發(fā)表于 11-03 10:57 ?13次下載

    C語言32個(gè)關(guān)鍵字

    C語言32個(gè)關(guān)鍵字,感興趣的小伙伴們可以看看。
    發(fā)表于 07-26 16:29 ?67次下載

    嵌入式C語言中volatile關(guān)鍵字

    volatile06. 附錄01. volatile概述volatile是C語言中的一個(gè)關(guān)鍵字。將變量定義為volatile就表示告訴編譯器這個(gè)變量可能會(huì)被竟想不到地改變,在這種情況下,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了,及優(yōu)化器
    發(fā)表于 10-21 10:21 ?6次下載
    【<b class='flag-5'>嵌入式</b>】<b class='flag-5'>C</b><b class='flag-5'>語言</b>中volatile<b class='flag-5'>關(guān)鍵字</b>

    嵌入式C語言知識(shí)總結(jié)

    了一些這方面的經(jīng)驗(yàn)和思考,就希望總結(jié)下來,系統(tǒng)的闡述嵌入式C語言的重要知識(shí)點(diǎn),就是這篇文章的由來。本文以自己在嵌入式上的實(shí)踐為基礎(chǔ),在結(jié)合相關(guān)資料, 闡述
    發(fā)表于 12-20 19:44 ?12次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b><b class='flag-5'>語言</b>知識(shí)總結(jié)

    C語言32個(gè)關(guān)鍵字可以分為這幾類

    C語言是一種面向過程、抽象化的通用程序設(shè)計(jì)語言,廣泛應(yīng)用于嵌入式底層和系統(tǒng)開發(fā)。C語言
    的頭像 發(fā)表于 12-31 15:28 ?5708次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>32個(gè)<b class='flag-5'>關(guān)鍵字</b>可以分為這幾類

    快速掌握C語言關(guān)鍵字

    C語言中的32個(gè)關(guān)鍵字你知道多少個(gè)呢?根據(jù)關(guān)鍵字的作用分為四類:數(shù)據(jù)類型關(guān)鍵字、控制語句關(guān)鍵字
    的頭像 發(fā)表于 07-06 08:04 ?749次閱讀
    快速掌握<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>關(guān)鍵字</b>

    C語言關(guān)鍵字--typedef

    C語言關(guān)鍵字使用方法學(xué)習(xí)指南!
    的頭像 發(fā)表于 10-07 12:44 ?595次閱讀
    主站蜘蛛池模板: 天天干天天干天天 | 殴美一级| 一级毛片日韩 | 欧美三级免费看 | 午夜福免费福利在线观看 | 亚洲精品九色在线网站 | 国产免费私拍一区二区三区 | 国产福利萌白酱喷水视频铁牛 | 中日韩精品视频在线观看 | 国产资源视频在线观看 | 四虎在线永久免费观看 | 人人看人人看人做人人模 | 四虎黄色影院 | 91在线网 | www.97色| 色婷婷激情五月综合 | 四虎午夜影院 | 久久澡| 国产女人和拘做受视频免费 | 性色网址 | 国模在线| 黄色大片网站 | 久久亚洲精品成人综合 | 欧日韩美香蕉在线观看 | 日本黄色大片免费观看 | 99亚洲精品卡2卡三卡4卡2卡 | 特级毛片女人18毛片 | 国产精品视频永久免费播放 | 韩国男女无遮挡高清性视频 | 国产1024一区二区你懂的 | 天天操2023| 亚洲人成a在线网站 | 色综合激情丁香七月色综合 | 色吧视频 | 美女全黄网站免费观看 | caoporn97人人做人人爱最新 | 涩涩97在线观看视频 | 777国产精品永久免费观看 | 操美女免费视频 | 黑人又大又粗又长又深受不了 | 国产精品久久久久aaaa |