使用const char*[]中的数据初始化结构实例时不正确
我获得了以下编译错误: 错误:初始值设定项元素不是常量 使用此代码时(分为3个文件,如下所示): 文件1 此数组用于在菜单的语言版本之间轻松切换使用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
#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]
使其保持如上图所示的内联状态
我做错了什么
我知道有很多关于这个编译错误的主题,但是没有一个真正涉及这种类型的数组结构组合