c - 结构程序

标签 c

我无法运行我的结构程序。 因为它收到“需要常量表达式”错误。 在这一行中:

 struct book_info book[i];

最佳答案

您几乎可以肯定正在使用不支持可变长度数组的编译器(或编译器模式)。

C99 中添加了声明可变长度数组 (VLA) 的功能,因此,如果您的编译器不符合标准,或者您正在使用类似 gcc -std=c89 的东西进行编译, 它不会起作用。

例如:

pax$ cat qq.c
#include <stdio.h>
#include <string.h>
int main (void) {
    int i = 7;
    char x[i];
    strcpy (x, "xyz");
    printf ("%s\n", x);
    return 0;
}

pax$ gcc -std=c99 -pedantic -Wall -o qq qq.c ; ./qq
xyz

pax$ gcc -std=c89 -pedantic -Wall -o qq qq.c
qq.c: In function ‘main’:
qq.c:5: warning: ISO C90 forbids variable length array ‘x’

关于c - 结构程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5335857/

相关文章:

c - fread 是否对大文件失败?

c - 为什么我的代码在 x64 而不是 x32 中编译?

c - 通用指针和void指针有什么区别?

c - in - gcc 内联汇编的操作数类型不匹配

c - 如何将字符数组转换为十进制整数数组?

c - 反向 C 字符串 - 简单的错误

C size_t 和 ssize_t 负值

c - 使用c进行冒泡排序

c - 将二进制文件读入结构变量,出现段错误

c - sscanf 读取字符串但 %n 返回 0