完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我经历了一件奇怪的事情。正如你所知道的,数组范围不能是变量。它们是指针,我们使用Maloc等。但是,我编写了一个类似这样的代码,它工作了。剩下的代码是不相关的。我用这个数组打印七个段显示。重要的是它初始化了str结构类型的myStr数组,因为我知道它能工作。我想知道它是否真的将数组分配给变量索引,或者使用不同的静态数。我使用xc16和dspic33fj128gp802。
|
|
相关推荐
14个回答
|
|
|
我经历了一件奇怪的事情,你没有提到。正如你所知道的数组范围不能是变量INCNo它们是指针,我们用malloc等等?MALOC在嵌入式系统中不是必需的,也是一个坏主意。数组与指针相似,在许多方面可以处理SAM.无符号字符数[5 ];/ /保留5字节。
|
|
|
|
|
|
GCC支持可变长度数组作为扩展。启用“严格ANSI警告”编译器选项(-ped.)来生成关于非标准构造的警告(C99中将可变长度数组添加到基础语言中)。
|
|
|
|
|
|
NKurzman,让我来澄清一下情况。奇怪的是数组声明将变量作为输入。我的意思是输入的长度是“他们是指针”。无论如何,在ANSI C中,我不期望类似的东西;int输入;/ /在运行时输入/ /一些函数ARR[输入];编译。然而,它被编译了,而且确实有效,奇怪的是这个。最后,我想安德森回答了我的问题,现在我还有一个。您所说的是数组可以具有可变长度,它们的声明与静态数组声明的权限相同吗?因此,没有MALLC,免费(或MalLC样,自由样的功能)和指针的长度,对吗?而且可变长度数组不规范我懂吗?我认为XC16是Microchip的专有软件。我不知道是GCC还是我误解了?
|
|
|
|
|
|
我不知道。如果它们是可变长度,那么它们必须分配和释放内存。静态数组不使用堆。XC16是一个基于GCC的编译器,由于这样的原因,andersm8位编译器被卡在了C89上。
|
|
|
|
|
|
至少在某种程度上,变量是初始化的。因此,很好的猜测数组大小是变量的值……非常不寻常…
|
|
|
|
|
|
CAMANCHETR -可变长度数组是C99标准的一部分,它只能在函数范围内使用,例如
|
|
|
|
|
|
可能是GCC的一个让我为你修正“特征”
|
|
|
|
|
|
不是真的。正如ANDSRM和ASPEN0866所陈述的,函数内的变量数组是C99 SPEC.GCC“后端”功能的一部分,这是C90和C++的函数。数组在运行时在堆栈上“aloLoad”。如果你不想要这个功能,你只能使用-PANANTIC来生成警告。
|
|
|
|
|
|
不是真的。正如ANDSRM和ASPEN0866所陈述的,函数内的变量数组是C99 SPEC.GCC“后端”功能的一部分,这一功能进入C90和C++。在运行时,数组在堆栈上“aloLoad”。如果您不想使用此功能,则只能使用-PANANTIC生成警告。英格尔使用项目,然后它会在一个真正的堆栈的8位CPU上工作。因为它在堆栈上,它在嵌入式系统中真的没有优势。它只是使崩溃随机应变。“迂腐”显示了GCC集团对C标准的蔑视。此外,它还抱怨没有出错的东西“不应该使用snprintf()try strcpy()代替“很棒的编译器前端,更糟糕的错误检查”。
|
|
|
|
|
|
谢谢大家的帮助。我的理论也是,初始化使长度为4,然后我尝试。不,不是4。应该是这个数字。在我的应用中,长度应该周期性地变化,在1-5之间变化。因此,它基本上像一个魅力。是的,我知道它的范围有限。也许以这种方式,编译器生成十六进制,除非在嵌套函数中创建大量动态数据,否则不会导致内存碎片。我已经在C中编码了几年,DeV C++和代码块都不允许我这样做。他们只是没有编纂。现在我用VisualStudio做电脑,我会试试这个。
|
|
|
|
|
|
它似乎是从堆栈分配的。不会有malloc分配,所以没有碎片。但是由于堆栈可以增长的最大值将基于最大的数量,所以每个项目在嵌入式系统中都没有好处。平均堆栈尺寸可能较小。
|
|
|
|
|
|
我认为它是从堆中分配的。我已经在StAcExcel中阅读了。人们说在函数中,使用变量数组样式声明创建一个指针,自动引入常见的malloc和free函数等。BTW我试过,实际上,范围甚至局限于这样的逻辑函数;
|
|
|
|
|
|
严格地说,这是一个实现细节,但是GCC的文档清楚地表明它们被放在堆栈上:您总是可以检查编译器输出以确保,但是从堆中分配的VLA是没有意义的。
|
|
|
|
|
|
啊……这是你的问题……-
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1097浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 08:58 , Processed in 1.328297 second(s), Total 98, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2500