2010-07-12 35 views
8

Có số lượng tối đa các thành phần cho phép enum trong C++ không?Giới hạn phần tử enum

(Câu hỏi nảy sinh từ câu trả lời cho câu hỏi trước đây của tôi về defines)

+7

IMO, nếu bạn cần hỏi, bạn nên xem lại thiết kế của mình; nhưng tôi nghĩ rằng nó có thể liên quan đến kích thước của một "int". M. – Max

+0

@Max: Có cơ sở để suy nghĩ không? Chỉ định tất cả các yếu tố được đặt tên trong một enum là tốt hơn lan rộng nó trên nhiều tập tin cho maintability vì lợi ích –

+0

Trình biên dịch nào bạn đang sử dụng? Số lượng các giá trị được phép trong 'enum' thay đổi từ triển khai sang triển khai. – bta

Trả lời

11

Không có bất kỳ tối đa hoặc tối thiểu quy định, nó phụ thuộc vào thực hiện của bạn. Tuy nhiên, lưu ý rằng Phụ lục B nêu rõ:

- Hằng số đếm trong một liệt kê đơn [4096].

Làm đề xuất. Nhưng đây đúng là một đề nghị, không phải là một yêu cầu.

+3

Crap, tôi thực sự cần thành viên thứ 4294967297 !! – Skurmedel

+0

Hoặc cho phép ít hơn vì trình biên dịch bị lỗi vì nó không đủ RAM để giữ tất cả các ký hiệu này trong bộ nhớ :-) – jdehaan

+3

Tất nhiên, nếu 4,294,967,297th điều tra được khai báo là 'name = 0', bạn có thể tiếp tục, các điều tra viên không có giá trị duy nhất nữa :-P –

4

Ngôn ngữ không chỉ định bất kỳ thứ gì như vậy. Tuy nhiên, trình biên dịch có thể có giới hạn. Bạn sẽ phải kiểm tra tài liệu biên dịch của bạn cho điều đó.

1

Trong trường hợp của C một enum chỉ là một bộ scoped tốt hơn là #define s. Dù đó có nghĩa là một cách chi tiết từ thư mục C tiêu chuẩn: một giá trị enum là một loại

đó là tương thích với một thực hiện xác định một trong những loại không thể thiếu.

Tôi đoán là C++ có định nghĩa tương tự và C++ 0x bổ sung thêm khả năng nhập. Tất cả trong một có nghĩa là số tiền bạn có thể có của họ là về mặt lý thuyết bị giới hạn bởi loại cơ bản (bất kể nó là gì? int hầu hết thời gian, tôi cho rằng, tiêu chuẩn C không rõ ràng về điều này). Nhưng trước khi bạn có thể thiết lập hàng triệu biểu tượng trình biên dịch của bạn sẽ bị lỗi hoặc có thể hết bộ nhớ.

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