完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在一个.c文件中定义一个数组,然后在其他文件中引用,用sizeof求数组长度,那么按说是必须要声明这个数组,并且应该指明数组的大小,但是是不是声明了,这部分代码又被封装起来了,无法查看,如果在定义的时候没有指定数组的大小,只是做了初始化,而且这个初始化可以看到,而且自己可以定义初始化的值,并且初始化不同元素个数也可以,那么在其他文件求该数组长度可以办到吗,比如下面中在一个.c文件中定义一个数组:unsigned char const keys[]=
{ key1, key2, key3, key4, key5 }; 数组中的元素是已定义的宏,在另一个文件中求数组大长度 arrlen = sizeof(keys) / sizeof(keys[0]); 这个有没有什么办法可以办到 |
|
相关推荐
2个回答
|
|
楼主定义的是unsigned char型的常量,理论是用sizeof(keys) 就可以了。因为每个占用一个字节。
|
|
|
|
在一个.c文件中定义一个数组并在其他文件中引用,可以使用外部链接(external linkage)来实现。外部链接意味着该变量或函数可以在程序的其他文件中访问。为了在其他文件中使用这个数组并使用sizeof求数组长度,你需要遵循以下步骤:
1. 在定义数组的.c文件中,使用`extern`关键字声明数组,这样编译器就知道这个数组在程序的其他部分定义。例如: ```c // file1.c unsigned char const keys[] = {key1, key2, key3, key4, ...}; ``` 2. 在其他.c文件中,使用`extern`关键字声明相同的数组,这样编译器就知道这个数组在程序的其他部分定义,而不是在当前文件中定义。例如: ```c // file2.c extern unsigned char const keys[]; ``` 3. 在其他.c文件中,你可以使用sizeof运算符来获取数组的长度。例如: ```c // file2.c int length = sizeof(keys) / sizeof(keys[0]); ``` 这里,`sizeof(keys)`将返回整个数组的大小,而`sizeof(keys[0])`将返回数组中单个元素的大小。将整个数组的大小除以单个元素的大小将给出数组的长度。 需要注意的是,如果数组在定义时没有指定大小,编译器会根据初始化的元素个数自动计算数组的大小。因此,在这种情况下,即使在其他文件中使用`extern`声明数组,也可以使用sizeof运算符来获取数组的长度。 总之,要在其他文件中引用一个数组并使用sizeof求数组长度,你需要: 1. 在定义数组的.c文件中使用`extern`声明数组。 2. 在其他.c文件中使用`extern`声明相同的数组。 3. 使用sizeof运算符来获取数组的长度。 这样,即使数组在定义时没有指定大小,也可以在其他文件中获取数组的长度。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1936浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
729浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
569浏览 3评论
594浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
552浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 18:05 , Processed in 1.141265 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号