【发布时间】:2011-11-16 18:02:25
【问题描述】:
我有类似的东西:
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];
};
在我的project_typedef.h 文件中。
在另一个文件中,我有类似的内容:
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' 的左侧必须具有结构/联合类型”。我认为前向声明会解决这个问题。为什么不呢?
【问题讨论】:
-
首先 == 看起来很奇怪...
-
@Tudor,一个错字,但在我的代码中不是这样。现在已经删掉了。
-
我只想说,当我看到指针类型用作普通类型时,我讨厌。 DATA_PTR 不会以任何方式简化代码编写,因为它仍然是指针,您仍然必须使用 -> 运算符。
标签: c struct typedef forward-declaration