Đặc biệt, tôi đã nhận sau mã trong giao diện thư viện:Có thêm điều tra viên vào enum break ABI không?
typedef enum
{
state1,
state2,
state3,
state4,
state5,
state_error = -1,
} State;
tôi nghiêm cấm để phá vỡ ABI. Tuy nhiên, tôi muốn thêm state6 và state7. Nó sẽ phá vỡ ABI?
Tôi tìm thấy here một số mẹo, nhưng tôi hơi nghi ngờ nếu đó là trường hợp của tôi?
Bạn có thể ...
- thêm điều tra viên mới cho một enum hiện có.
Ngoại lệ: nếu điều đó dẫn đến trình biên dịch chọn loại cơ bản lớn hơn cho enum, điều đó làm cho sự thay đổi không tương thích nhị phân. Thật không may, các trình biên dịch có một số mất thời gian để chọn kiểu cơ bản, do đó, từ quan điểm thiết kế API, bạn nên thêm một số tử Max .... với giá trị lớn rõ ràng (= 255, = 1 < < 15, v.v.) để tạo khoảng thời gian của các giá trị số đếm được đảm bảo để phù hợp với loại cơ bản được chọn, bất cứ điều gì có thể được.
'state3' có ba mã khác nhau? – Deduplicator
Thêm một enum mới trong khi để lại những cái hiện có một mình không nên phá vỡ khả năng tương thích ABI miễn là kích thước của loại cơ bản không thay đổi như là kết quả của việc bổ sung. Đó là những gì tài liệu được trích dẫn của bạn nói. –