C 警告:初始值设定项元素在加载时不可计算
我无法理解以下场景中的gccC 警告:初始值设定项元素在加载时不可计算,c,gcc,c89,C,Gcc,C89,我无法理解以下场景中的gcc-pedantic输出: $ gcc -pedantic parse.c -lpopt parse.c: In function ‘main’: parse.c:19:7: warning: initializer element is not computable at load time { "bps", 'b', POPT_ARG_INT, &speed, 0, ^ parse.c:20:7: warning: initial
-pedantic
输出:
$ gcc -pedantic parse.c -lpopt
parse.c: In function ‘main’:
parse.c:19:7: warning: initializer element is not computable at load time
{ "bps", 'b', POPT_ARG_INT, &speed, 0,
^
parse.c:20:7: warning: initializer element is not computable at load time
"signaling rate in bits-per-second", "BPS" },
^
parse.c:27:7: warning: initializer element is not computable at load time
{ "raw", 'r', 0, &raw, 0,
^
parse.c:28:7: warning: initializer element is not computable at load time
"don't perform any character conversions" },
^
使用以下C代码(取自):
及
在
C89
标准中,初始值设定项列表必须是编译时常量表达式,因此会出现警告。但是,在C99中,它是受支持的
在C89中,您可以执行以下操作:
struct poptOption optionsTable[2];
optionsTable[0] = {"bps", 'b', POPT_ARG_INT, &speed, 0,
"signaling rate in bits-per-second", "BPS" };
optionsTable[1] = {"crnl", 'c', 0, 0, 'c',
"expand cr characters to cr/lf sequences" };
在C89
标准中,初始值设定项列表必须是编译时常量表达式,因此会出现警告。但是,在C99中,它是受支持的
在C89中,您可以执行以下操作:
struct poptOption optionsTable[2];
optionsTable[0] = {"bps", 'b', POPT_ARG_INT, &speed, 0,
"signaling rate in bits-per-second", "BPS" };
optionsTable[1] = {"crnl", 'c', 0, 0, 'c',
"expand cr characters to cr/lf sequences" };
在C89
标准中,初始值设定项列表必须是编译时常量表达式,因此会出现警告。但是,在C99中,它是受支持的
在C89中,您可以执行以下操作:
struct poptOption optionsTable[2];
optionsTable[0] = {"bps", 'b', POPT_ARG_INT, &speed, 0,
"signaling rate in bits-per-second", "BPS" };
optionsTable[1] = {"crnl", 'c', 0, 0, 'c',
"expand cr characters to cr/lf sequences" };
在C89
标准中,初始值设定项列表必须是编译时常量表达式,因此会出现警告。但是,在C99中,它是受支持的
在C89中,您可以执行以下操作:
struct poptOption optionsTable[2];
optionsTable[0] = {"bps", 'b', POPT_ARG_INT, &speed, 0,
"signaling rate in bits-per-second", "BPS" };
optionsTable[1] = {"crnl", 'c', 0, 0, 'c',
"expand cr characters to cr/lf sequences" };
因为可变速度是在堆栈上分配的,所以在编译时它的地址是未知的。只有在main()执行时,才会知道它的地址。变量raw也是如此。作为任何一个好的编译器,编译器的错误消息并不完全指向出错的元素,这让您很难理解它在抱怨什么。因为在堆栈上分配了可变速度,所以在编译时它的地址是未知的。只有在main()执行时,才会知道它的地址。变量raw也是如此。作为任何一个好的编译器,编译器的错误消息并不完全指向出错的元素,这让您很难理解它在抱怨什么。因为在堆栈上分配了可变速度,所以在编译时它的地址是未知的。只有在main()执行时,才会知道它的地址。变量raw也是如此。作为任何一个好的编译器,编译器的错误消息并不完全指向出错的元素,这让您很难理解它在抱怨什么。因为在堆栈上分配了可变速度,所以在编译时它的地址是未知的。只有在main()执行时,才会知道它的地址。变量raw也是如此。作为任何一个好的编译器,编译器的错误消息并不完全指向出错的元素,这让您很难理解它在抱怨什么