我无法运行我的结构程序。 因为它收到“需要常量表达式”错误。 在这一行中:
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/