我有一個在file1.h中定義的枚舉。我想把這個枚舉作爲另一個文件file2.h中的一個參數,而不包括file1.h。現在我必須從file3.h中調用get_color()函數。我得到兩個不同的錯誤類型:存儲大小未知:枚舉
- 通過從兼容的指針類型「get_color」的參數1 [-Werror]
- 錯誤1解決了,但我得到一個不同的錯誤:山坳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.
}
我可能是錯的,但是這不是類型定義是如何工作的。它是'colors_t',成爲類型,而不是'enum colors_t'。就像結構一樣。 – grochmal
請注意,應該是'file3.c'或'main.c',而不是'file3.h'。如果你在一個文件中有函數定義,它可能不是頭文件。 – Schwern
如果你想使用'enum colors_t'和'colors_t',寫:'typedef enum colors_t RED, BLUE, GREEN2, } colors_t;'。否則,選擇一個並堅持下去。 –