我的代码如下所示
#include <stdio.h>
static const char *a ="this is a";
static const char *b ="this is b";
char *comb_ab[2] =
{
a,
b
};
int main() {
int i=0;
for(i=0; i<sizeof(comb_ab)/sizeof(comb_ab[0]); i++) {
printf("%s\n",comb_ab[i]);
}
}
这段代码在 G++ 编译器(C++)上正常运行,但是在 GCC 上无法工作... 输出如下:
test.c:8:2: error: initializer element is not constant
a,
^
test.c:8:2: error: (near initialization for ‘comb_ab[0]’)
test.c:10:1: error: initializer element is not constant
};
^
test.c:10:1: error: (near initialization for ‘comb_ab[1]’)
如何在gcc的静态const *char数组中包含变量成员? 请帮助我!
const char *
来初始化char *
,这是一种类型不匹配。请检查你的 g++ 编译器输出。 - M.Mconst char *a
是指向常量字符数组的非常量指针,如果您需要一个常量指针,则需要char const * const a
。 - Holtg++.exe (tdm-1) 5.1.0
上测试后,代码无法编译,这是预期的结果,因为static const char *
意味着“指向具有内部链接和静态持续时间寿命的常量字符的指针”,但你正在将其初始化为“指向非常量字符的指针数组”。 - raymai97