【发布时间】:2021-08-05 09:32:29
【问题描述】:
我写了一个简单的原型代码来说明问题:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int main(int argc, char const *argv[])
{
int rows, columns;
int arr[rows][columns];
printf("%i", arr[0][0]);
}
编译此代码我没有收到错误/警告,但在我的 IDE(Visual Studio 代码)中,变量 rows 和 columns 带有红色下划线,当将鼠标悬停在它们上方时,我收到错误/消息说 @987654324 @。
这是代码中的问题还是只是 IDE 的问题?代码编译和运行没有任何问题,并且完全按照我的需要运行。知道这是为什么吗?
非常感谢。
【问题讨论】:
-
最生动的问题是你的变量行和列未初始化。它们没有价值。错误文本似乎还表明它们不仅需要具有值,而且这些值必须是常量值。在 C++ 中就是这种情况。我有点惊讶,因为我的印象是 C 支持可变长度数组
-
@ArmenTsirunyan 即使为它们分配了值,也会显示相同的错误。根据我所做的研究,C 确实支持可变长度数组,这就是您初始化它们的方式(授予
int rows, columns;应该为它们分配值,例如int rows = 1, columns = 2;。似乎是 IDE 的问题,但我只是想确认一下。 -
我相信您的 IDE 设置为 C++ 模式,不支持 VLA。如果您可以将其设置为识别 C99 语法,它应该可以工作。
-
@abelenky 我在 VS 代码中使用 c/c++ 扩展。据我了解,我认为不能只使用扩展的 C 部分。但是,根据您的建议,我尝试使用不同的 IDE 并没有遇到任何问题。所以看起来你是对的。谢谢。
-
@Slash MSVC 不支持 C99。