1

ヘッダーファイルbuildTree.hとCファイルbuildTree.cがあり、ヘッダーファイルに構造体typedefがあり、構造体メンバーの1つを列挙型にしたい

ヘッダーファイルコードは次のとおりです。

#define TREE_ITEM_LIMIT 100

typedef enum pType {
    none = 0,
    bool = 1,
    number = 2,
    baud = 3    
}pType;

typedef struct tree {
    // 27 byte size struct
    char longName [13];
    char shortName [5];
    char shortParent [5];
    ptype parameterType;
    void (* handler)(int);
}tree;

extern tree item[TREE_ITEM_LIMIT];
extern tree defaultValues;

次に、CファイルのparameterTypeメンバーに値を割り当てようとすると、基本的に構造体がかなり厄介であるというエラーのバケットロードが発生します。本当に奇妙なのは、割り当てを再度削除しても、次にコンパイルするときにerrrosが消えないことです。構造体からpTypeメンバーを削除してコンパイルする必要があります。そうすれば、エラーはなくなります。もう一度追加すると、割り当てを再試行するまでエラーは発生しません...

Imがヘッダーの列挙型を正しく使用していないと推測しますが、方法がわかりません...

編集:それが再生されていたが変更がなかった場合に備えて、列挙型のブール値をコメントアウトしてみました

4

2 に答える 2

2

これが、構造体で「pType」を「ptype」と誤って入力したことが原因である場合、神々はあなたを罰します。

そして次回は、エラー出力の最初の行を読んで修正します。

于 2012-07-04T18:31:19.823 に答える
1

列挙定数に名前を付けることboolは特に悪い考えです。これは「stdbool.h」用に予約されており、atで多くの問題が発生する可能性があります。これがあなたが直面していることであるならば、あなたはあなたのコンパイラバージョンもエラー出力も私たちに与えなかったので、私たちは言うことができません。

于 2012-07-04T18:32:49.307 に答える