Будет ли добавление определения перечисления внутри класса нарушить его бинарную обратную совместимость?

Я знаю, что добавление статической функции-члена - это нормально, но как насчет перечисления определение? Никаких новых элементов данных, только определение.


Немного предыстории:

Мне нужно добавить статическую функцию-член (в классе), которая распознает (функцию) версию IP-адреса по его строковое представление. Первое, что приходит мне в голову, - объявить enum для IPv4 , IPv6 и Unknown и сделать это enum код возврата моей функции.

Но я не хочу нарушать бинарную обратную совместимость.

И действительно плохой вопрос (для SO) - есть ли здесь какой-либо источник или вопрос, я могу прочитать об этом больше? Я имею в виду - что нарушает бинарную совместимость, а что - нет. Или это зависит от многих вещей (например, архитектуры, ОС, компилятора ..)?


РЕДАКТИРОВАТЬ : Относительно комментария @PeteKirkham: Хорошо, по крайней мере - есть ли способ проверить / проверить изменения ABI или лучше опубликовать новый вопрос об этом?

EDIT2 : Я только что нашел SO Вопрос: Инструмент статического анализа для обнаружения разрывов ABI в C ++ . Я думаю, что это как-то связано здесь и отвечает на часть об инструменте для проверки двоичной совместимости.Вот почему я рассказываю об этом здесь.

9
задан Community 23 May 2017 в 12:11
поделиться