Browsing this Thread:
1 Anonymous Users
Topic options
View mode
新的在前
有關#pragma的使用
資深會員
Joined
: 2008/4/13 16:02最後登入時間
: 6/25 9:16
Group:
註冊會員
Level : 12
HP : 0 / 288
MP : 60 / 13920
EXP : 54
小弟欲處理的程式中包含下列指令: #pragma udata access AccessSection //39 near unsigned char Rec_Data; //1 near unsigned int RXQTop; //2 near unsigned int RXQEnd; //2 #pragma udata bank00=0x60 //160 char USBTXQ[UTXQSize]; //160 #pragma udata bank01=0x100 //256 char TCPData[TCPDSize]; //192 char StoreString[StoreSize]; 因這些變數會被多個函數所使用,因此想提出放到header檔中,但卻發現無法在header中將其設為extern 變數,是否只要規定了使用的位址後,就不能將其提出至header呢? 假設我將上述內容存於res.h中,再於A.c及B.c檔中分別include res.h,會產生如下錯誤(未設為extern時): section 'bank00' type is non-overlay and absolute but occurs in more than one input file. 若header中設為extern時,則為: section address permitted only at definition 這是表示#pragma udata bank00=0x60,無法在header中進行宣告嗎? 說起來res.h檔中使用extern 應為declaration,A.c及B.c中,有一個應是definition,但在compiler的錯誤訊息中似乎沒有對它們加以分別 若各位前輩有相關的經驗,還請不吝指教
發表於: 2008/4/17 12:39
Re: 有關#pragma的使用
版主
Joined
: 2004/4/30 10:53最後登入時間
: 2021/11/30 18:11
From CAE, Microchip
Group:
站務管理者 註冊會員
Level : 75
HP : 744 / 1861
MP : 5367 / 111279
EXP : 45
觀念問題,請打電話來討論,用寫的太長了。
發表於: 2008/4/17 14:46
You can view topic.
你 不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.