hack3er 发表于 2013-3-16 23:12:52

IAR在结构体数组赋值时为什么会报不是常量的错误?求指导

本帖最后由 hack3er 于 2013-3-16 23:15 编辑

代码如下:typedef struct
{   
void (*menu_action1)();
void (*menu_action2)();
}run_t;

void run1()
{    printf("run1()\n");}

void run2()
{    printf("run2()\n");}

void run3()
{    printf("run3()\n");}

void run4()
{    printf("run4()\n");}

const run_t M1=
{
run1,
run2,
};

const run_t M2=
{
run3,
run4,
};

const run_t menus[] = {M1,M2};   

当执行const run_t menus[] = {M1,M2};   
为什么IAR编译的会提示expression must have a constant value?

jetlib 发表于 2013-3-17 09:28:58

const run_t menus[] =
{
{run1,run2},
{run3,run4},
};

jetlib 发表于 2013-3-17 09:29:55

另外如果想用结构体的常量做数组,可以用:
const run_t *menus[] =
{
&M1,
&M2,
};

hack3er 发表于 2013-3-17 17:49:35

jetlib 发表于 2013-3-17 09:29 static/image/common/back.gif
另外如果想用结构体的常量做数组,可以用:
const run_t *menus[] =
{


就我上面的代码,在语法上有错么?

为什么在GCC上编译可以过 ?

而IAR上却过不了?
页: [1]
查看完整版本: IAR在结构体数组赋值时为什么会报不是常量的错误?求指导