久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4036|回復: 1
收起左側

keil c51單片機中調用一個已聲明但未定義的函數,發(fā)生的一個奇怪的問題

[復制鏈接]
ID:248705 發(fā)表于 2018-10-14 23:48 | 顯示全部樓層 |閱讀模式
如題,今天在調單片機程序的時候(用的stc89c51),聲明了很多函數,但有一個忘記寫函數體,在主程序中調用,只報了警告,于是并沒有上心,急急忙忙下程序到單片機,發(fā)現程序不能正常運行。。。抓耳撓腮了半個小時(點擊警告不能定位),才發(fā)現有一個函數沒有寫函數體,寫上函數體后,程序正常執(zhí)行。索性來了興趣,為什么程序會不正常執(zhí)行,寫了一段測試程序,如圖:

軟件仿真

軟件仿真
仿真中運行發(fā)現編譯器對于僅聲明的函數,會將其地址指向0x0000,也就是主程序的入口main,每當程序執(zhí)行到這個僅有聲明的“函數”時,就會從0000從新開始。。。。貌似發(fā)現了新大陸?stc89c51的軟復位?但其實我并不知道原理,也不是很了解匯編,為何會這樣。。。。求大佬指點。
回復

使用道具 舉報

ID:387733 發(fā)表于 2018-10-15 07:10 | 顯示全部樓層
軟件編譯有兩個步驟,第一步對各個模塊編譯,因為編譯過程中地址是無法定位的,過程中對于所有不能定位的地址,包括已經申明過的地址指向暫用“0000”占位。第二步是將各個編譯好的模塊連接定位,將編譯時預留的“0000”用實際地址替換掉。如果只有聲明,沒有函數體,那么在連接時就無法定位實際地址,所以仍保留“0000”,這時系統會給出警告,因此對于有些警告必須重視,否則會引起麻煩。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美黄色大片在线观看 | 999久久精品 | 影音先锋欧美资源 | 黄色大全免费看 | 亚洲精品一区在线观看 | 国产一区二区在线播放 | 国产成人免费视频网站高清观看视频 | 久久综合久久综合久久综合 | 欧美一级欧美三级在线观看 | 国产精品一区二区av | 正在播放国产精品 | 亚洲综合精品 | 亚洲免费久久久 | 欧美一区二区在线观看 | 欧美日韩国产在线观看 | 日本精品999 | 精品久久国产 | 亚洲成人免费网址 | 网址黄 | 日本免费一区二区三区四区 | 日韩中文字幕网 | 亚洲国产精品人人爽夜夜爽 | 91在线视频免费观看 | 精品亚洲91 | 激情a| 日韩av一区二区在线观看 | 日韩一区二区在线视频 | 免费观看av网站 | 国产午夜精品久久 | 亚洲国产一区二区在线 | 亚洲成人av一区二区 | 国产成人精品一区二区三区 | 精品欧美一区二区在线观看欧美熟 | 日韩欧美中文字幕在线观看 | 国产乱性 | 亚洲精品一区二区 | 亚洲第一天堂 | 国产免费xxx | 国产成人免费视频网站高清观看视频 | 99久久精品免费看国产四区 | 一级毛片免费看 |