2012-09-10 25 views
7

Chúng ta có thể sử dụng cấu trúc và tổ chức ẩn danh ở đâu?Tiêu chuẩn nào cho phép cấu trúc ẩn danh và liên minh trong C và C++?

struct 
{ 
    int bar; 
}; // anonymous struct 

union 
{ 
    int bar; 
}; // anonymous union 

Tôi nghĩ rằng chúng ta có thể làm điều đó trong các tiêu chuẩn sau:

  • đoàn - C++ 98, C++ 03, C++ 11, C11

  • struct - C11

Am i đúng hay không

+2

gcc cũng hỗ trợ các tổ chức ẩn danh trong C99 dưới dạng phần mở rộng GNU –

+0

Kiểu của 'struct' và' union' mà bạn cung cấp chỉ có ý nghĩa nếu bạn đặt nó trong một 'struct' /' union' khác. Đây có phải là bối cảnh mà bạn đang nói đến không? – cha0site

+0

@ cha0site Yeah, chắc chắn – FrozenHeart

Trả lời

5

Tuyên bố về C là chính xác: tiêu chuẩn hóa các cấu trúc ẩn danh và các công đoàn là khá mới (C11) cfr. GCC man.

Lưu ý rằng trình biên dịch ưa thích của bạn có thể bật các tính năng đó dưới dạng tiện ích mở rộng cho tiêu chuẩn được hỗ trợ hiện tại (ví dụ: tiện ích mở rộng GNU C99).

Sau đó, kiểm tra thông số kỹ thuật cũ, có vẻ như các công đoàn ẩn danh được hỗ trợ trong C++ kể từ 1998.

Kiến thức chung là các cấu trúc ẩn danh bị cấm trong C++ và tôi không tìm thấy bất kỳ sửa đổi nào. Kể từ Visual studio 2012, C++ được xác nhận là không hỗ trợ tính năng này.

+0

Cảm ơn! Còn C++ thì sao? – FrozenHeart

+0

Tôi đã cập nhật câu trả lời. – ziu

Các vấn đề liên quan