我写了下面的代码:结构查找表使用字符串指针问题
unsigned char *cPtr[] =
{
"First",
"Second",
"Third"
};
typedef struct
{
int a;
char *lut; /* or char lut[20]*/
}Grp_t;
const Grp_t Grp_st[]=
{
{ 0, cPtr[0] },
{ 1, cPtr[1] },
{ 2, cPtr[2] }
};
当我尝试编译这段代码,我得到了以下错误:
错误:初始元素不是常数
错误:(近初始化为 'Grp_st [0] .lut [0]')
但是当我更换*cPtr[]
通过cPtr[][16]
作为
unsigned char cPtr[][16] =
{
"First",
"Second",
"Third"
};
我能够成功地编译代码。
请任何人解释我在这里失踪的概念。
你不能在C中做这件事。当它用'cPtr [] [16]编译时'你应该得到警告,它不会做你认为它会做的事。 –
@MichaelWalz,当你说它不能在C中做什么时,你的意思是什么?有时我得到同样的问题,并通过声明链解决它:'unsigned char c_ptr_0 [] =“First”; unsigned char c_ptr_1 [] =“Second”; unsigned char * c_ptr [] = {c_ptr_0,c_ptr_1};' - 那么在这里不能做什么? – imbearr
@MichaelWalz,请您详细说明 – user1093152