私はfile1.hで定義された列挙型を持っています。この列挙型をfile1.hを含まない別のファイルfile2.hの引数として参照したいと思います。今私はfile3.hからget_color()関数を呼び出さなければなりません。 [-Werror] 記憶領域のサイズが不明です:enum
- 、私は別のエラーを取得::私は2つの異なるエラーの種類を取得していますCOLのISNのストレージサイズを知られていない。
唯一の問題はfile2.hにfile1.hを含めることができないことです。私がどのように問題を解決できるかを提案してください。
file1.h
typedef enum {
RED,
BLUE,
GREEN2,
} colors_t;
file2.h
void get_color(enum colors_t *col);
file3.h //オプション1
#include "file1.h"
#include "file2.h"
int main()
{
colors_t col;
get_color(&col); //error: passing argument 1 of 'get_color' from incompatible pointer type [-Werror]
}
file3.h //オプション2
#include "file1.h"
#include "file2.h"
int main()
{
enum colors_t col;
get_color(&col); //error: storage size of col isn't known.
}
は私が間違っているかもしれないが、typedefではどのように動作するか、それはありません。これは、 'enum colors_t'ではなく' colour_t 'です。構造体に似ています。 – grochmal
'file3.c'ではなく、' file3.c'または 'main.c'でなければなりません。ファイル内に関数定義がある場合は、おそらくヘッダーではありません。 – Schwern
'enum colors_t'と' colors_t'の両方を使いたいのであれば、 'typedef enum colors_t { RED、 BLUE、 GREEN2、 } colors_t;'と書いてください。それ以外の場合は、1つを選択してください。 –