Tôi có một cái gì đó như:typedef stuct với tờ khai chuyển tiếp trong 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];
};
trong tập tin project_typedef.h
tôi.
Trong tập tin khác, tôi có cái gì đó như:
void fileInput(DATA_PTR data)
{
//usual declarations and other things
data->miscData = 0; //Works!
data->units.x[0] = 5; //Doesn't work
//etc...
}
Tuy nhiên, điều này không làm việc kể từ khi đơn vị được công bố sau khi dữ liệu trong project_typedef.h
(nếu tôi chuyển đổi thứ tự nó hoạt động). Lỗi mà tôi nhận được là "left of '.x' phải có struct/union type". Tôi nghĩ rằng tờ khai chuyển tiếp sẽ khắc phục vấn đề này. Tại sao không?
Đầu tiên là == trông lạ ... – Tudor
@Tudor, một lỗi đánh máy, nhưng đó không phải là cách nó nằm trong mã của tôi. Nó đã được chỉnh sửa ngay bây giờ. – user1007692
Tôi chỉ muốn nói rằng tôi ghét khi tôi thấy các loại con trỏ được sử dụng làm loại bình thường. DATA_PTR không đơn giản hóa mã viết bằng bất kỳ cách nào vì nó vẫn là con trỏ và bạn vẫn phải sử dụng toán tử ->. –