5

次のデータ構造体を取得しました。

typedef struct
{
    lamp *lamp;
    unsigned char a;
    unsigned char b;
    unsigned char c;
    unsigned char d;
    unsigned char e;
    void (*func)(struct event *);
} event;

構造体内の最後の行は、次のような引数としてイベントへのポインターを持つ戻り型 void を持つ関数へのポインターであると想定されています。

void function(event *evt);

ただし、次の警告メッセージが表示されます。「そのスコープはこの定義または宣言のみです。これはおそらくあなたが望むものではありません」。これは正しいですか、それとも間違っていますか?

4

1 に答える 1

7

構造体は次のように定義する必要があります。

typedef struct event  // <<< note the `event` tag here
{
    lamp *lamp;
    unsigned char a;
    unsigned char b;
    unsigned char c;
    unsigned char d;
    unsigned char e;
    void (*func)(struct event *);
} event;              // <<< you can still keep `event` as a typedef
                      //     which is equivalent to `struct event`
于 2013-03-18T11:19:44.940 に答える