小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C語言_引用數(shù)組常量遇到的問題

 華燈初放l 2018-08-22
1、問題場景:
文件<a1.c>中定義了一個(gè)常量數(shù)組,這個(gè)數(shù)組的內(nèi)容經(jīng)常需要修改,因此長度會(huì)有變動(dòng):
const u8  buf[]={1,2,3,4,5,7}

2、問題描述:
(1)文件<a2.c>需要引用這個(gè)常量,extern const u8 buf[?];引用時(shí)的長度怎么確定?
用宏定義
#define len sizeof(buf)/sizeof(u8)
extern const u8 buf[len]
編譯不能通過。為什么不能通過,是否有其他解決方案?

補(bǔ)充描述
buf的長度沒法確定;
①空著不行,在其他文件計(jì)算sizeof(buf)/sizeof(u8)時(shí),編譯報(bào)不知道buf長度錯(cuò)誤;看來編譯器是根據(jù)extern聲明判斷長度;
②用宏不行,宏計(jì)算的結(jié)果放到聲明里,編譯器也會(huì)報(bào)錯(cuò);
③用常量定義長度,編譯器也報(bào)錯(cuò);

3、解決方法一:
(1)將#define len sizeof(buf)/sizeof(u8)
修改為
#define len sizeof(buf)/sizeof(buf[0])
(2)在同一個(gè)文件中,先定義
const u8  buf[]={1,2,3,4,5,7}
接著定義
const u8 Buf_Lenth=sizeof(buf)/sizeof(buf[0]);
(3)在頭文件中,
用extern聲明,
extern const u8 buf[];
(4)在其他文件中,需要用到數(shù)組長度時(shí),用Buf_Lenth;編譯就可以通過;

注意:在其他文件中使用時(shí),不用算sizeof(buf)/sizeof(buf[0] ,會(huì)報(bào)錯(cuò)未定義buf大小。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多