欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 為何這個單片機程序得寫多一行? [打印本頁]

作者: lwanwan    時間: 2021-12-28 20:59
標題: 為何這個單片機程序得寫多一行?
這是一個7段數碼管循環顯示數字的程序
  1. #include "reg52.h"
  2. #include "intrins.h"
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define out P0
  6. uchar code seg[]={0xc0,0xa4,0x99,0x82,0x80,0xf9,0xb0,0x92,0xf8,0x90,0x01};                                 
  7. void delayms(uint);                                 
  8. void main(void)
  9. {        
  10. uchar i;
  11. while(1)
  12.         {        
  13.         out=seg[i];
  14.         delayms(900);
  15.         i++;
  16.         if(seg[i]==0x01)i=0;  
  17.         }
  18. }
  19. void delayms(uint j)                                
  20. {
  21. uchar i;
  22. for(;j>0;j--)
  23.           {        
  24.                 i=250;
  25.                     while(--i);
  26.                     i=249;
  27.                     while(--i);
  28.            }
  29. }
復制代碼


為啥在main函數前面要多寫一行void delayms(uint);不寫這一行編譯就會出錯




作者: Hephaestus    時間: 2021-12-28 21:40
如果第7行不存在,第14行main引用到delayms的時候不知道delayms是個什么東西,自然無法編譯成匯編。

不想寫第7行也可以,把19行到29行的delayms代碼放到第8行前面,這樣main引用delayms的時候已經知道這東西是個什么玩意兒了。
作者: vimli    時間: 2021-12-28 22:11
函數聲明,基礎的C語言問題
作者: ssk7793    時間: 2021-12-28 23:28
程序加載的順序問題
作者: 13205495918    時間: 2021-12-29 08:09
函數聲明,main函數之前要保證你main函數里面要調用的函數存在,你也可以不生命,只要把那個子函數的定義寫在main函數前面即可。
作者: 15996822510    時間: 2021-12-29 08:43
你不寫delayms,main怎么知道delayms(900)。可以吧下面的void delayms(uint j) 放到main前面。
作者: 天風情    時間: 2021-12-29 08:48
這是C語言方面的問題,函數在調用前必須先聲明
作者: 趙杰趙杰    時間: 2021-12-29 08:57
要先聲明啊 ,程序是從上往下執行,你不先告訴編譯器有這個函數,等執行到這個函數的時候,編譯器認不出來
作者: lwanwan    時間: 2021-12-29 10:59
Hephaestus 發表于 2021-12-28 21:40
如果第7行不存在,第14行main引用到delayms的時候不知道delayms是個什么東西,自然無法編譯成匯編。

不 ...

明白了,謝謝各位大佬
作者: 風之痕于夢想    時間: 2021-12-29 15:36
C語言從main函數開始,然后讀到delayms就會從main之前去找,如果不加聲明就找不到就會報錯
作者: sinclair123    時間: 2021-12-29 16:04
c語言的規則,調用前,必須先聲明函數;或者把19行之后的內容(void delayms(uint j)    )挪到main()函數之前
作者: phj123    時間: 2021-12-29 17:23
函數聲明,c語言的基礎規則,沒有聲明的話就會報錯
作者: 學習一下123    時間: 2021-12-30 12:13
C語言從main函數開始,如果不加聲明就找不到就會報錯
作者: 名字不是重點    時間: 2021-12-30 15:10
函數調用前要聲明,如同生了孩紙要起名,不然,上學后老師點名,都叫仔仔,不就亂套了?
作者: 1558496398    時間: 2022-1-2 12:36
聲明這個函數,不然無法調用
作者: 青街古城    時間: 2022-1-16 17:41
申明啊如果不申明的話編譯的時候不知道你這個延時函數是什么東西,如果你不申明的話就把延時函數寫到main函數的前面
作者: jiajuntao    時間: 2022-1-16 20:33
聲明調用,要不,無法找到這個函數,不寫可以,main函數寫道最后,所有子函數,寫道他前面,就不需要聲明了。
作者: lwh999995    時間: 2022-1-16 22:55

把函數寫在main前面就無需聲明
作者: 湖南    時間: 2022-1-17 10:48
函數聲明
作者: univers    時間: 2022-1-18 11:21
void delayms(uint);    這是聲明,因為你把函數放在主函數main下面了,你把這個函數放在main上面,就可用這個聲明了。
作者: 累不死的狗    時間: 2022-1-18 17:30
就比如你跟人借東西一樣,拿走之前得先和人家打聲招呼吧?
作者: HAPPY3    時間: 2022-1-23 08:54
你盡量將子程序放在主程序之前
作者: cn_zhx    時間: 2022-1-23 10:37
delayms(900)放到main前面就不需要寫這一行了。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1