我获得了以下编译错误:
错误:初始化元素不是常量
使用此代码(分为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”)时,一切都很好。
问:如何使用
中的字符串数据初始化structconst char *const message[][LANGUAGES]
以便它如上所示保持内联?
我做错了什么?
我知道有很多关于这个编译错误的主题,但实际上没有一个涉及这种类型的数组结构组合。