Tôi tuyên bố một struct trong IDE (Netbeans) như thế này:Tuyên bố Cấu trúc: Trình khởi tạo hợp lệ trong khai báo?
struct foo { size_t var = 1; }
Và IDE cho biết quy phạm pháp luật của mình. Tôi biên dịch các dự án (một lib tĩnh của nó ..) và trình biên dịch nói rằng nó hợp pháp (không rên rỉ hoặc ném).
Bây giờ kể từ khi tôi chỉ kiểm tra cú pháp vào thời điểm này tôi phải hỏi người có thể biết nếu điều này thực sự sẽ làm việc khi tôi đi đến khai báo một struct của thẻ này trong thủ tục của tôi như thế này:
struct foo myfoo;
Vì vậy, câu hỏi đặt ra là: Liệu đó có phải là một trợ cấp hợp lệ không? (size_t var = 1
) hay là trình biên dịch chỉ vuốt ve bản ngã của tôi ở đây? Tôi đã không tìm thấy bất cứ điều gì trên google hoặc trong tài liệu như thế này vì vậy tôi đoán nó không hoạt động theo cách tôi hy vọng nó sẽ.
* chỉnh sửa Vì vậy, tôi và các 'chàng trai tốt ở đây @SO đã tìm ra rằng nó sẽ biên dịch trong một cấu hình gỡ lỗi nhưng không phải là một cấu hình phát hành. Ai nói một đầu tốt hơn một vài nghìn? : D
xem câu hỏi liên quan http://stackoverflow.com/questions/330793/how- to-initialize-a-struct-in-ansi-c – TJD
@TJD Bây giờ cả hai đều nhanh chóng và tuyệt vời! Cảm ơn. Nhưng tôi vẫn không hiểu tại sao GCC và IDE cho phép nó trượt mà không rên rỉ. Chỉ cần đá những lời cảnh báo lên vụ nổ ... Và tôi vẫn có thể nghe thấy tiếng dế kêu. lol. –
Bạn đang sử dụng phiên bản gcc nào? Tôi chỉ thử với 4.4.3 và tôi nhận được một lỗi 'mong đợi': ',', ','; ','} 'hoặc' __attribute__ 'trước' = 'token' –