我的编译器错误是什么意思?
What does my compiler error mean?
我的程序使用 cc
进行编译,但是当我使用 $ gcc -pedantic -Wall -ansi -O4
进行编译时,我收到了我不理解的警告:
miniShell.c: In function ‘main’:
miniShell.c:144:24: warning: initializer element is not computable at load time [enabled by default]
struct command cmd[] = { {printenv}, {sort}, {less} };
以上是什么意思?对于这些变量,我在 main 的顶部有我的声明:
char *printenv[] = { "printenv", 0};
char *sort[] = { "sort", 0 };
char *less[] = { "less", 0 };
struct command cmd[] = { {printenv}, {sort}, {less} };
我有一个命令的全局变量。
struct command
{
char * const *argv;
};
printenv
的值在运行时会发生变化。您的程序的后续执行可能会发现该数组的位置发生变化。
在 C89 中,初始化列表的元素必须是常量编译时表达式。那不是。
在 C99 及更高版本中,此限制已放宽。您可以使用 -std=c99
或 -std=c11
启用此功能
我的程序使用 cc
进行编译,但是当我使用 $ gcc -pedantic -Wall -ansi -O4
进行编译时,我收到了我不理解的警告:
miniShell.c: In function ‘main’:
miniShell.c:144:24: warning: initializer element is not computable at load time [enabled by default]
struct command cmd[] = { {printenv}, {sort}, {less} };
以上是什么意思?对于这些变量,我在 main 的顶部有我的声明:
char *printenv[] = { "printenv", 0};
char *sort[] = { "sort", 0 };
char *less[] = { "less", 0 };
struct command cmd[] = { {printenv}, {sort}, {less} };
我有一个命令的全局变量。
struct command
{
char * const *argv;
};
printenv
的值在运行时会发生变化。您的程序的后续执行可能会发现该数组的位置发生变化。
在 C89 中,初始化列表的元素必须是常量编译时表达式。那不是。
在 C99 及更高版本中,此限制已放宽。您可以使用 -std=c99
或 -std=c11