W szczególności, mam następujący kod w interfejsie biblioteki:Czy dodanie enumeratorów do enum łamie ABI?
typedef enum
{
state1,
state2,
state3,
state4,
state5,
state_error = -1,
} State;
ja zabronione złamać ABI. Jednak chcę dodać state6 i state7. Czy złamie ABI?
Znalazłem here wskazówkę, ale mam wątpliwości, czy to moja sprawa?
Można ...
- dopisywał rachmistrzów do istniejącego wyliczenia.
Wyjątek: jeśli prowadzi to do wybrania przez kompilator większego bazowego typu wyliczenia, oznacza to, że zmiana jest niekompatybilna z binarnymi. Niestety, kompilatory mają pewną swobodę wyboru bazowego typu, więc z perspektywy projektowania API zaleca się dodać moduł wyliczający Max .... z wyraźną dużą wartością (= 255, = 1 < < 15, itp.), Aby utworzyć interwał liczbowych wartości wyliczających, które gwarantują dopasowanie do wybranego podstawowego typu, niezależnie od tego, jakie mogą być.
'state3' ma trzy różne kody? – Deduplicator
Dodanie nowego wyliczenia przy pozostawieniu istniejących samodzielnie nie powinno naruszać zgodności ABI, o ile rozmiar podstawowego tekstu nie zmienia się w wyniku dodatków. Tak mówi twój cytowany materiał. –