2012-03-19 93 views
2

可能有人請幫助解決這個錯誤的編譯錯誤C2079:如何解決在Windows

TEST.CPP(14):錯誤C2079: 'X1' 使用了未定義的結構 'X'
測試。 CPP(16):錯誤C2228:左「.x_x1' 必須具有類/結構/聯合類型

這裏是代碼的一部分:

struct x x1; 
    ... 
    x1.x_x1=y_x1;  

在unix上,該程序正在編譯和鏈接,沒有錯誤。 感謝您的幫助,

+0

哪裏是 'x' 的定義? – 2012-03-19 19:16:31

+0

請爲顯示此問題的最小程序提供源代碼。答案在於你省略的代碼。 – 2012-03-19 19:18:52

+0

你可以在一些細節中編寫代碼片段,以便我們可以更好地觀看 – Invictus 2012-03-19 19:21:10

回答

1

只需forward declaration,你只能定義一個指針或參考struct,你不能訪問struct成員(x1.x_x1)。

如果您想訪問成員,請包含結構的完整定義。

E.g.以下將工作:

struct x { 
    int x_x1; 
}; 

struct x x1; 
    ... 
x1.x_x1=y_x1; 

//或

#include "struct_x.h" 
struct x x1; 
    ... 
x1.x_x1=y_x1; 

其中struct_x.h有:

struct x { 
    int x_x1; 
};