这将是一个新手问题,但我正在尝试做一个小练习C语言(不C++),我遇到了一些问题。
假设我想在方法中使用数组,其大小取决于参数之一:
void someFunc(int arSize)
{
char charArray[arSize];
// DO STUFF
...
}
当我尝试将其编译为.c
文件内视觉工作室2013我收到一条错误消息,指出不允许使用非常量数组大小。但是相同的代码可以在代码块在 GNU 编译器下。我应该相信哪个?编译器的行为如此不同是正常的吗?我一直认为,如果你正在做一些编译器不喜欢的事情,你一开始就不应该这样做,因为它不是标准。
任何输入都是有用的!我的背景是Python我正在尝试更多地参与数据结构和算法的编程。
正如您可能知道的那样,我的平台是 Windows。如果这个问题需要更多信息才能得到回答,请告诉我。
变长数组(VLA) are a C99功能和 Visual Studio直到最近 did 不支持C99我不确定目前最新版本是否支持VLA。另一方面,gcc 确实支持 C99,尽管没有充分。海湾合作委员会支持VLA 作为 C99 模式之外的扩展, 即使在C++.
来自C99标准草案部分6.7.5.2
数组声明符第 4 段:
[...] 如果大小是整数常量表达式并且元素类型具有已知的常量大小,则该数组类型不是变长数组类型;否则,数组类型是变长数组类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)