C_and_CPP 板


LINE

Win10 TDM-GCC 4.9.2 64bit 只知道extern的粗淺概念,有錯糾正 如果a檔案的一個變數前面前置字有extern 那該變數就是在其他檔案有定義,在link階段才 會把extern變數的位址提供給a(是這樣說嗎?),編譯時a只會知道這個變數的名稱跟型態而 已 範例: https://goo.gl/rBdTXw 我把const前置詞先拿掉 先不考慮const的問題 file1.c: unsigned char data1[] = { 0x65, 0xF0, 0xA8, 0x5F, 0x5F, 0x5F, 0x5F, 0x31, 0x32, 0x2E, 0x31, 0xF1, 0x63, 0x4D, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x20, 0x42, 0x59, 0x3A, 0x20, 0x69, 0x73, 0x70, 0x56, }; unsigned int data1_size = sizeof(data1) / sizeof(data1[0]); unsigned int data1_version = 1; main.c: struct Data_Info { unsigned char * data_ptr; unsigned int data_size; unsigned int data_version; }; extern unsigned char data1[]; extern unsigned int data1_size; extern unsigned int data1_version; static struct Data_Info Data_Info_Table[] = { { data1, data1_size, data1_version}, }; int main(void) { return 0; } [Error] initializer element is not constant [Error] (near initialization for 'Data_Info_Table[0].data_size') [Error] (near initialization for 'Data_Info_Table[0].data_version') 下面的回應是說The problem is that the compiler doesn't know the value to place into the data_size and data_version members of the field. ok,但是我不太確定結構的第一個成員指標變數為什麼沒有問題? 是因為它是位址? 在compiler階段會跟編譯器講data1有定義在某處,所以link階段就會得 link到? 是不是跟引用外部function的概念一樣? 謝謝 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.216.7.85
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1527574537.A.90A.html
1F:→ sarafciel: 基本就跟你講的一樣 compile階段會留一個symbol給data1 05/29 23:55
2F:→ sarafciel: link時會把這個symbol填上它在記憶體佈局裡的位置 05/29 23:56
3F:→ sarafciel: 如果其他.o或lib沒給出這個symbol你的linker會不給過 05/29 23:57
4F:→ sarafciel: 所以到執行期的時候data1的位置已經"寫死"在elf裡面了 05/29 23:59
5F:→ anoymouse: 謝謝! 05/30 09:17







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP