Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用const char*[]中的数据初始化结构实例时不正确_C_Arrays_Multidimensional Array_Struct_Constants - Fatal编程技术网

使用const char*[]中的数据初始化结构实例时不正确

使用const char*[]中的数据初始化结构实例时不正确,c,arrays,multidimensional-array,struct,constants,C,Arrays,Multidimensional Array,Struct,Constants,我获得了以下编译错误: 错误:初始值设定项元素不是常量 使用此代码时(分为3个文件,如下所示): 文件1 此数组用于在菜单的语言版本之间轻松切换 #define LANG_EN 0 #define LANG_PL 1 #define LANGUAGES 2 const char *const message[][LANGUAGES] = { #define MSG_INTRO 0 /*0*/ { "Hello", "Witamy" }, #define MSG_MENU1 1

我获得了以下编译错误:

错误:初始值设定项元素不是常量

使用此代码时(分为3个文件,如下所示):

文件1

此数组用于在菜单的语言版本之间轻松切换

#define LANG_EN 0
#define LANG_PL 1
#define LANGUAGES 2
const char *const message[][LANGUAGES] = {


#define MSG_INTRO 0
     /*0*/  { "Hello", "Witamy" },


#define MSG_MENU1 1
     /*1*/  { "Option1", "Opcja1" },


#define MSG_MENU2 2
     /*2*/  { "Option2", "Opcja2" },
};
文件2

除其他外,该文件包含所用结构的定义:

struct _menuitem
{
    const char *const text;
    int action;
};

struct _menuitem const menu;
文件3

在main.c中,我初始化结构:

#define PGM_STR(X) ((const  char[]) { X })

const struct _menuitem const menu = {PGM_STR(message[MSG_INTRO][LANG_PL]),  0};

当我在
PGM_STR
macro下用引号括起任何字符串(如“Testest”)时,一切都正常

Q:如何使用

const char *const message[][LANGUAGES]
使其保持如上图所示的内联状态

我做错了什么

我知道有很多关于这个编译错误的主题,但是没有一个真正涉及这种类型的数组结构组合