我有這樣的:在我project_typedef.h
文件的typedef與向前聲明stuct用C
typedef struct Data DATA, *DATA_PTR;
typedef struct Units UNITS, *UNITS_PTR;
struct Data
{
double miscData;
UNITS units;
};
struct Units
{
double x[2];
double y[2];
double z[2];
};
。
在另一個文件中,我有這樣的:
void fileInput(DATA_PTR data)
{
//usual declarations and other things
data->miscData = 0; //Works!
data->units.x[0] = 5; //Doesn't work
//etc...
}
但是,這並不工作,因爲單位在project_typedef.h
數據宣佈後(如果切換它的工作順序)。我得到的錯誤是「.x'的左邊必須有struct/union類型」。我認爲前面的聲明可以解決這個問題。爲什麼不?
首先,==看起來很奇怪...... – Tudor
@Tudor,一個錯字,但這不是它在我的代碼中。現在編輯出來。 – user1007692
我只是想告訴我,當我看到用作普通類型的指針類型時,我討厭。 DATA_PTR不會以任何方式簡化寫代碼,因爲它仍然是指針,並且您仍然必須使用 - >運算符。 –