C 错误:初始值设定项元素在加载时不可计算
我一直得到编译器错误:初始化器元素在加载时不可计算 我正在使用MPLAB C30编译器。在其他代码中,通过将10放在数组声明的括号内解决了此错误,但由于某些原因,这在这里不起作用 有人有什么建议吗?谢谢C 错误:初始值设定项元素在加载时不可计算,c,arrays,compiler-errors,C,Arrays,Compiler Errors,我一直得到编译器错误:初始化器元素在加载时不可计算 我正在使用MPLAB C30编译器。在其他代码中,通过将10放在数组声明的括号内解决了此错误,但由于某些原因,这在这里不起作用 有人有什么建议吗?谢谢 KEYDEF KDEF_scrn00_Home[10] = { //Value, Action, Link {0, KACT_Power, 0 } // key # ,{0, KACT_GotoScreen, (void *) &SCRN_s
KEYDEF KDEF_scrn00_Home[10] =
{
//Value, Action, Link
{0, KACT_Power, 0 } // key #
,{0, KACT_GotoScreen, (void *) &SCRN_scrn01_Zone1} // key # 1
,{0, KACT_None, 0 } // key # 2
,{0, KACT_None, 0 } // key # 3
,{0, KACT_GotoScreen, (void *) &SCRN_scrn06_mode} // key # 4
,{0, KACT_GotoScreen, (void *) &SCRN_scrn04_ice} // key # 5
,{0, KACT_None, 0 } // key # 6
,{0, KACT_GotoScreen, (void *) &SCRN_scrn08_alarm} // key # 7
,{0, KACT_None, 0 } // key # 8
,{0, KACT_None, 0 } // key # 9
};
看起来您的编译器可能没有使用C99模式。启用C99模式时,这种初始化应该可以 看起来您的编译器可能没有使用C99模式。启用C99模式时,这种初始化应该可以 它抱怨哪一行?假设所有这些符号都可用,您的代码看起来很好。我看不出有任何问题,这不是对
void*
的强制转换。你的“链接”是什么类型的?如果它是void*
,则您不必强制转换。如果它是不同的类型,并且您的变量是不同的,那么这种设计是有问题的。您需要显示KACT.*
和SCRN.*
标识符的声明。它抱怨哪一行?假设所有这些符号都可用,您的代码看起来很好。我看不出有任何问题,这不是对void*
的强制转换。你的“链接”是什么类型的?如果它是void*
,则您不必强制转换。如果它是不同的类型,并且您的变量是不同的,那么这种设计是有问题的。您需要显示KACT.*
和SCRN.*
标识符的声明。