错误:“数组可能没有此类型的元素”

时间:2011-10-31 09:30:09

标签: c arrays

我想要做的是在C(而不是C ++)中声明一个多维数组,我将用英语和希腊语存储一个文本。但编译器总是会出错。我的代码如下:

#define _TLANG 2 //TOTAL LANGUAGES
char blankStr[_TLANG ][] = {{"HI!"}, {"HELLO"}};

但我收到错误:Error[Pe098]: an array may not have elements of this type

我怎样才能克服这个?

我的想法是将我的所有文本存储在这个数组中,例如:

char blankStr[_TLANG ][] = {
                        {{"HI!"},     {"HELLO"}}, //text1 (english and then greek
                        {{"GOOD MORNING"}, {"GOOD NIGHT"}}   //text2 etc
                      };

2 个答案:

答案 0 :(得分:2)

应该是:

char blankStr[][_TL] = {" ", " "};

const char * blankStr[][_TL] = {{" "}, {" "}};

由于string是一个char数组。

答案 1 :(得分:0)

当您在初始化中编写"abc"时,就像编写{'a', 'b', 'c', '\0'}这是一个数组本身。所以当你写:

char blankStr[_TL][] = {{" "}, {" "}};

你实际上在说:

char blankStr[_TL][] = {{{' ', '\0'}}, {{' ', '\0'}}};

这是由3d数组初始化的二维数组。只需删除额外的{}即可获得所需内容:

char blankStr[_TL][] = {" ", " "};

注意_TL是保留字的方式(盯着_后跟大写字母)。

我这样做的方法是在常量名称前加上库名,或者有时是我自己的首字母。例如,如果我想定义窗口大小,我会说:

#define SH_WIDTH 1980
#define SH_HEIGHT 1080

,而不是_W_H,例如!