使用const char * [] []中的数据初始化结构实例的错误

时间:2015-09-19 09:31:14

标签: c arrays multidimensional-array struct const

我获得了以下编译错误:

  

错误:初始化元素不是常量

使用此代码(分为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宏下放任何字符串(如“Testest”)时,一切都很好。

问:如何使用

中的字符串数据初始化struct
const char *const message[][LANGUAGES]

以便它如上所示保持内联?

我做错了什么?

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

0 个答案:

没有答案