1

我正在尝试为我的应用程序构建一个模块表。

/*** MODULE TABLE DEFINTION ***/ 
struct ModuleInfo
{
 char use_module;     // 0 = don't use, 1 = use, -1 for end of list
 char module_name[64];    // english name of module
 int(*module_init)(void);   // module initialization callback
 void(*module_tick)(void);   // module tick callback
 void(*module_end)(void);   // module end callback
 void *config_table;     // config table
};

/*** MODULE TABLE ***/
const struct ModuleTable module_table[] = {
 {
  1, "GPS/NMEA over RS232",
  gps_nmea_rs232_init,
  gps_nmea_rs232_tick, 
  gps_nmea_rs232_end,
  NULL
 },
 // end table
 {
  -1, NULL, NULL, NULL, NULL
 } 
};

该表存储了一个模块列表,其中包含指向初始化、滴答和终止函数的指针,这些函数将在适当的时间间隔被调用。

我正在使用 MPLAB C30 构建它,它是特定 PIC 微控制器的 GCC 3.23 版本(我认为?)。

但是,当我尝试编译它时,我得到:

In file included from main.c:3:

modules.h:67: error: array type has incomplete element type

如果可能的话,该表应该是 const 的,因为我有很多(编辑:ROM)备用,而没有太多(编辑:RAM)备用。我无法弄清楚为什么这不起作用。

4

2 回答 2

1
{
  -1, NULL, NULL, NULL, NULL
 } 

缺少一个值,不是吗?我计算了结构中的六个字段。

于 2010-07-17T18:57:17.930 回答
1

其实这就是问题...

声明

const struct ModuleTable module_table[] = ...

是一个有效的 C 构造,没有显式定义 struct ModuleTable;这就是你的代码失败的原因,改变那行说

const struct ModuleInfo module_table[] = ... 
于 2010-07-17T19:19:12.270 回答