51的c語言中允許子函式呼叫其本身嗎

時間 2022-02-01 17:40:16

1樓:齋子鏡瓊怡

可以的。

c語言規定,任意函式均可以巢狀呼叫。所以子函式可以呼叫其它子函式,也可以呼叫自身。

如int func(int a)

這樣呼叫自身的稱為遞迴呼叫。

又如:int fa(int a)

int fb(int a)

這就是不同函式呼叫的例子。

2樓:匿名使用者

1、c語言可以巢狀呼叫或遞迴呼叫子函式。

在c語言中,函式巢狀允許在一個函式中呼叫另外一個函式。例如funca()

這個就叫做巢狀呼叫,它是一個語言提供的程式設計的方法,也就是語言的特性。

2、遞迴,是一種解決方案,一種思想,將一個大工作分為逐漸減小的小工作,比如說一個人要搬50塊石頭,他想,只要先搬走49塊,那剩下的一塊就能搬完了,然後考慮那49塊,只要先搬走48塊,那剩下的一塊就能搬完了……以此類推的思考,遞迴是一種思想,只不過在程式中,就是依靠函式巢狀這個特性來實現了。例如

funca()

遞迴最明顯的特點就是,自己呼叫自己(就是函式巢狀呼叫)

3樓:匿名使用者

void math_x() reentrant然後應該就沒警告了。

這個警告是告訴你,該函式沒有被設計為允許重入(遞迴),一般來說,沒有為重入進行特別設計的函式,如果執行時被中斷給斷掉,那麼它所使用的一些暫存器狀態可能已經被中斷破壞,從而程式可能會出錯。

你加了reentrant之後,理論要應該確保你的函式即使被中斷,等中斷返回後依然能正確執行。

51微控制器c語言中斷函式不能進行引數傳遞,是什麼意思,誰能解釋一下

4樓:匿名使用者

是指中斷處理函式不能有輸入引數也不能有函式返回。因為中斷都是些硬體自動呼叫,沒有程式去給他傳遞引數,也沒有硬體去接收引數。

不過x86計算機的軟中斷可以有引數傳遞,不過他是用暫存器傳遞的。

5樓:

1、51微控制器c51語言中斷函式本身不帶引數傳遞,但你可以使用全域性變數進行引數傳遞。

2、所謂中斷函式不能進行引數傳遞,是指呼叫函式時能否帶引數,c51是不能的,但完全可以使用全域性變數的方式實現帶引數的功能。

6樓:匿名使用者

就是說不能像呼叫普通函式那樣直接傳遞引數

可以用全域性變數傳遞引數

7樓:匿名使用者

有可能是記憶體不夠用了。

問個關於51微控制器呼叫函式的時間問題(c語言) 20

8樓:匿名使用者

既然想到了用定時器 怎麼不繼續往下想呢 想要時間儘量精確 定時器是首選

9樓:

定時器開總中斷ea=1;

定時器中斷 et0=1或et1=1;

開啟定時器tr0\1=1;

寫定時器中斷函式

10樓:匿名使用者

下面的是我用定時器0做的延時函式,你看看,可以精確到10ms,如果你還想精確,調定時器的初值就可以。最高精度是1ms.

void inittimer0(void) reentrant // initialize t0 for timer 0.01s

// timer0 interrupt

void timer0_isr(void) interrupt 1 // timer0 interrupt

// delay time

void delaytime(int16u sec, int16u msec) reentrant // time delay function

11樓:溫馨鬼腳七

用定時器肯定可以精確地控制時間啊

12樓:哨案亞該

定時器是可以的,,不過要用到至少兩個執行緒才可能比較好

51微控制器c語言程式設計子函式呼叫問題 程式功能是實現四個獨立按鍵控制數碼管四個位的段選來動態掃描

13樓:匿名使用者

你的顯示子程式的名稱是:

void digdispaly()

可是在主程式呼叫時,卻寫成了

digdisplay();

比較一下,這兩個一樣嗎,難道都不是你自己寫的嗎?

51微控制器中組合語言如何呼叫c的子程式?

14樓:匿名使用者

我的程式是keil編譯的,如下

先申明extrn code (_send_crc) ;send_crc是c中的函式,彙編中加了_

呼叫的時候

lcall _send_crc

如果要專

使用c中的變數,那麼code變成

屬相應的data,xdata等

15樓:匿名使用者

我的程bai序keil編譯器,

extrn code(du_send_crc)的第一個國家zhisend_crc c函式編譯加上呼叫dao_lcall _send_crc

如果您要成相應的資料,然內後使用容變數在c,xdata**

16樓:匿名使用者

我的程來序keil編譯器,

extrn code(_send_crc)的第一自個國家send_crc c函式編譯加上bai呼叫_lcall _send_crc

如果您要成相應du的zhi資料,然後使用變數dao在c,xdata**

17樓:匿名使用者

用逆向思維考慮就是在c語言下插入彙編

18樓:匿名使用者

查查c的編譯

器和彙編編譯器的資料,上面有詳細的說明。

一般在彙編中用extern宣告外專部函式,將c語言中屬的函式名前面加上下劃線就是彙編的函式名,有些編譯器是這樣的,並不是所有的編譯器都是這樣的。還是要查編譯器的使用說明才能知道你用的編譯器是怎麼操作的。

如果是keil,應該是上面的操作。

19樓:匿名使用者

請您留下郵箱,我給您個檔案,您就知道如何

c語言中的函式呼叫

include int fun1 int x,int y,int z int fun2 int x,int y,int z int main void int fun1 int x,int y,int z int fun2 int x,int y,int z 你要使用,你寫的函式求出的值,那就要有個...

C語言中函式呼叫問題

如果一個函式要使用引數,它就必須定義接受引數值的變數。形式引數與實際引數 函式定義時填入的引數我們稱之為形式引數,簡稱形參,它們同函式內部的區域性變數作用相同。形參的定義是在函式名之後和函式開始的花括號之前。呼叫時填入的引數,我們稱之為實際引數,簡稱實參。必須確認所定義的形參與呼叫函式的實際引數型別...

c語言中,函式返回值怎麼用,c語言中呼叫函式如何返回多個值?

斑駁丶4129仉 一般用0表示函式執行正確,正常返回 用負數表示函式執行出錯,每個值可以提前定義,根據出錯的值進行出錯處理。誠心為您解答每一個問題!如您滿意請採納最佳!如有疑問請繼續追問!您的好評是我們前進的動力,相互幫助,一起進步! return後接一個值。在呼叫這個函式的函式裡面,呼叫它的時候希...