我有这样的:在我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不会以任何方式简化写代码,因为它仍然是指针,并且您仍然必须使用 - >运算符。 –