會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





在pic16f1824.h裡面的結構型別變數,為什麼都宣告為"extern"?
中級會員
註冊日期:
2014/09/29 12:04
所屬群組:
註冊會員
文章: 65
等級: 6; EXP: 95
HP : 0 / 148
MP : 21 / 1369
離線
各位好,據我所知,使用extern的時機是在參考別的source file裡面已經宣告的變數

例如: A file宣告 int flag;(global variable),在B file中想要參考 flag的話,就必須在B file裡也宣告extern int flag;

拿一個在16f1824.h裡的struct來討論:

typedef union {
struct {
unsigned SEN :1;
unsigned RSEN :1;
unsigned PEN :1;
unsigned RCEN :1;
unsigned ACKEN :1;
unsigned ACKDT :1;
unsigned ACKSTAT :1;
unsigned GCEN :1;
};
} SSP1CON2bits_t;
extern volatile SSP1CON2bits_t SSP1CON2bits @ 0x216;

最後一行,已經"宣告"了 SSP1CON2bits,為什麼還要+上extern呢?
這樣是不是代表,在其他file裡面已經有"宣告" SSP1CON2bits了?
如果是的話,是在哪個檔案呢?

9月13日 16:42:01
轉換PDF檔 列印


Re: 在pic16f1824.h裡面的結構型別變數,為什麼都宣告為"extern"?
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14151
等級: 72; EXP: 51
HP : 1072 / 1787
MP : 4717 / 70841
離線
之前使用 C18 時,暫存器的宣告是在 PIC18Fxxxx.asm 檔裡宣告每個周邊暫存器的,所以 PIC18Fxxxx.h 檔裡的周邊暫存器就些要使用 extern 的宣告。

但 XC8 沿用 C18 的位元結構的宣告我有找過為何還要加 extern ? 到目前我還是沒找到真正的宣告是在哪的檔案裡。繼續找一下在告知。

後面的 @0x216 是強定位址,Linker 是不會檢查此該位址是否有發生衝突。

9月14日 11:51:00
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結

網頁捷徑
2017 Summer Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project