Tôi tìm thấy một số mã khởi tạo struct ngày hôm qua đã ném tôi cho một vòng lặp. Dưới đây là một ví dụ:Khởi tạo cấu trúc C bằng cách sử dụng nhãn. Nó hoạt động, nhưng làm thế nào?
typedef struct { int first; int second; } TEST_STRUCT;
void testFunc() {
TEST_STRUCT test = {
second: 2,
first: 1
};
printf("test.first=%d test.second=%d\n", test.first, test.second);
}
Đáng ngạc nhiên (với tôi), đây là kết quả:
-> testFunc
test.first=1 test.second=2
Như bạn có thể thấy, struct được khởi tạo đúng cách. Tôi đã không nhận thức được tuyên bố có nhãn có thể được sử dụng như thế. Tôi đã nhìn thấy một số cách khác để khởi tạo cấu trúc, nhưng tôi không tìm thấy bất kỳ ví dụ nào về kiểu khởi tạo cấu trúc này trên bất kỳ Câu hỏi thường gặp C trực tuyến nào. Có ai biết cách thức/tại sao nó hoạt động?
Tuyệt vời, tài liệu đó giải thích rõ cú pháp: Một cú pháp khác có cùng ý nghĩa, lỗi thời kể từ GCC 2.5, là 'fieldname: ', như được hiển thị ở đây: struct điểm p = {y: yvalue, x: xvalue}; –
@AndrewCottrell, cú pháp "fieldname:" này trông rất tự nhiên (và thích hợp hơn) với tôi, bất kỳ ý tưởng nào tại sao nó nên được coi là lỗi thời? – rick
@rick "fieldname:" cú pháp là một phần mở rộng gcc và chưa bao giờ là một phần của bất kỳ tiêu chuẩn ISO C nào. – sigjuice