c - 这是一个有效的 C 程序吗?

标签 c gcc cc turbo-c

我写了一个程序,其中数组的大小作为用户的输入。

#include <stdio.h>
main()
{
    int x;
    scanf("%d", &x);
    int y[x];
    /* some stuff */
}

这个程序在我学校的编译器上编译失败Turbo C (古董编译器)。 但是当我用 GNU CC 在我的 PC 上尝试这个时,它编译成功了。

所以我的问题是,这是一个有效的 C 程序吗?我可以使用用户的输入来设置数组的大小吗?

最佳答案

它现在是一个有效的 C 程序,但在 15 年前不是。

无论哪种方式,它都是一个有问题的 C 程序,因为使用 x 时不知道它可能有多大。用户可以为 x 输入恶意值并导致程序崩溃或更糟。

关于c - 这是一个有效的 C 程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555834/

相关文章:

C 宏表达式返回值

c++ - g++ 链接到外部库创建 undefined reference

clang 和 gcc 具有复合文字的不同行为

C 使用 dirent.h

c - 如何指定目标文件的名称

c - 数组 Blackjack 排序错误 C 编程

客户端服务器程序和 mode_t

c - 尝试使用 C 中的宏为文本着色,但得到 : error: expected ')'

c++ - GCC 是如何实现 C++ 标准分配器的?

包含文件的更改未在 C 中注册