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
 } 
};

このテーブルには、適切な間隔で呼び出される初期化、ティック、および終了関数へのポインターを含むモジュールのリストが格納されます。

これは、特定の PIC マイクロコントローラー用の GCC 3.23 (と思いますか?) のバージョンである MPLAB C30 を使用して構築しています。

ただし、これをコンパイルしようとすると、次のようになります。

In file included from main.c:3:

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

(編集:ROM)スペアがたくさんあり、(編集:RAM)スペアがあまりないため、テーブルは可能であれば const にする必要があります。なぜこれが機能しないのかわかりません。

4

2 に答える 2

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

値がありませんね。構造体の 6 つのフィールドを数えます。

于 2010-07-17T18:57:17.930 に答える
1

実はそこが問題…

宣言する

const struct ModuleTable module_table[] = ...

struct ModuleTable を明示的に定義していない有効な C コンストラクトです。それがあなたのコードが失敗している理由です。その行を次のように変更してください

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