新聞中心
單片機(jī) C語言 函數(shù)定義
#define uint16 unsigned int - typedef unsigned int uint16;
成都創(chuàng)新互聯(lián)公司長期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為臺州企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、網(wǎng)站制作,臺州網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
#define uchar8 unsigned char - typedef unsigned char uchar8;
我們再單片機(jī)c語言編程中,頭文件一般都是用來定義一些宏和函數(shù)聲明的對嗎
頭文件的功能的確是用來定義一些宏和函數(shù)聲明的, 但是也是i可以定義變量的, 如果你在頭文件里定義變量編譯出錯(cuò)的話 可能是因?yàn)槟愕膯纹瑱C(jī)的編譯器不支持在頭文件中定義變量, 這個(gè)跟編譯器有關(guān)。 有的編譯器是支持在頭文件中定義變量的。
一般不再頭文件中定義變量是因?yàn)榕轮貜?fù)包含所產(chǎn)生的重復(fù)定義。
并且頭文件一般要具有通用性, 你在里面定義了變量的話別人再使用的時(shí)候就得去注意避免重復(fù)定義。
單片機(jī)C語言 函數(shù)的聲明
重入函數(shù),又叫再入函數(shù),是一種可以在函數(shù)體內(nèi)不直接或間接調(diào)用其自身的一種函數(shù)。
再入函數(shù)可被遞歸調(diào)用,無論何時(shí),包括中斷函數(shù)在內(nèi)的任何函數(shù)都可以調(diào)入。再入函數(shù)在
C51編譯時(shí)使用的是模擬棧。
函數(shù)說明: 函數(shù)名(形式參數(shù)表) reentrant
注意事項(xiàng):
1、再入函數(shù)不能傳遞bit類型參數(shù)。
2、與PL/M51兼容的函數(shù)不能具有reentrant,這樣也不能調(diào)用再入函數(shù)。
3、在編譯時(shí):再入函數(shù)建立的是模擬堆棧區(qū),small模式下模擬堆棧區(qū)位于idata
區(qū),compact模式下模擬堆棧區(qū)位于pdata區(qū),large模式下模擬堆棧區(qū)位于xdata區(qū).
4、在同一程序中可以定義和使用不同存儲(chǔ)器模式的再入函數(shù),任意模式的再入函數(shù)不能調(diào)
用不同存儲(chǔ)器模式的再入函數(shù),但可以調(diào)用普通函數(shù)。
5、實(shí)際參數(shù)可以傳遞給間接調(diào)用的再入函數(shù)。無再入屬性的間接調(diào)用函數(shù)不能包含調(diào)用參
數(shù)
C語言中不能在函數(shù)里面聲明函數(shù)嗎
你這個(gè)問題看似簡單,其實(shí)涉及到了函數(shù)的聲明與定義,以及C語言的標(biāo)準(zhǔn)規(guī)范和具體編譯器的實(shí)現(xiàn)問題。
從標(biāo)準(zhǔn)規(guī)范來看:
C語言允許函數(shù)里聲明函數(shù),但是不建議這么寫,因?yàn)椴焕诙辔臋n的組織。
C語言禁止函數(shù)里定義函數(shù),但是個(gè)別編譯器卻沒遵循標(biāo)準(zhǔn)。
C語言的標(biāo)準(zhǔn)和編譯器的實(shí)現(xiàn)并不是完全統(tǒng)一,為了可移植性,建議一切都按C語言標(biāo)準(zhǔn)中推薦的做法來寫。
我還寫了個(gè)代碼附帶注釋,程序在CFree這個(gè)IDE(內(nèi)置gcc編譯器)上運(yùn)行是通過的,但是在VC++6上就可能通不過了,主要是編譯器具體實(shí)現(xiàn)不同。
#include?stdio.h
//函數(shù)外?
//聲明,允許,推薦的做法?
int?add1(int?a,?int?b);
int?main(int?argc,?char?*argv[])
{
//函數(shù)內(nèi)
//聲明,允許,但是不建議這么寫?
int?add2(int?a,?int?b);
//C語言標(biāo)準(zhǔn)里禁止函數(shù)內(nèi)定義函數(shù)、
//但是有個(gè)別編譯器也允許這樣做,比如GCC
//此種寫法不通用,強(qiáng)烈不建議使用?
int?add3(int?a,?int?b)
{
return?a+b;
}?
//C99標(biāo)準(zhǔn)中,調(diào)用函數(shù)之前,必須保證聲明已出現(xiàn)過?
printf("%d\n",?add1(1,2));
printf("%d\n",?add2(2,3));
printf("%d\n",?add3(3,4));
return?0;
}
//函數(shù)外?
//定義,允許
int?add1(int?a,?int?b)
{
return?a+b;
}
//定義,允許
int?add2(int?a,?int?b)
{
return?a+b;
}
--您的采納是我們的動(dòng)力--
分享標(biāo)題:單片機(jī)c語言聲明函數(shù)嗎 單片機(jī)編程函數(shù)聲明
本文網(wǎng)址:http://www.dlmjj.cn/article/dohpego.html