Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 错误:初始值设定项元素在加载时不可计算_C_Arrays_Compiler Errors - Fatal编程技术网

C 错误:初始值设定项元素在加载时不可计算

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

我一直得到编译器错误:初始化器元素在加载时不可计算

我正在使用MPLAB C30编译器。在其他代码中,通过将10放在数组声明的括号内解决了此错误,但由于某些原因,这在这里不起作用

有人有什么建议吗?谢谢

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.*
标识符的声明。