我想要做的是在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
};
答案 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
,例如!