Spawn
Так а имена, разве, не придется менять во всем коде, если у вас что-либо, где-либо "съехало"?
Хм. Смотри. Ежели речь идёт о случае, когда битов нам хватит, но надо в середину что-то воткнуть - то мы меняем константы.
Например, БЫЛО:
AlarmKotel = 9;
AlarmDrainVanna = 10;
AlarmDrainTualet = 11;
СТАЛО:
AlarmKotel = 9;
AlarmDrainKuhna = 10;
AlarmDrainVanna = 11;
AlarmDrainTualet = 12;
...то в этом плане код мы НЕ трогаем: поименованные константы нам в этом помогут.
Это как раз то, чего мне не хватало в программее 2003 года, которую я ща исправляю. У меня там всталялись элементы в дерево (как папки), и надо было указывать номера значков этих элементов: выбранный и обычный. Элементы вставлялись в разных местах дерева: в диалоге Импорта, в Добавлении, в Свойствах, в Перетаскивании элемента.
Сейчас мне надо сделать изменяемые значки. И надо найти все места кода, где я их вставляю. Если бы я тогда сделал бы константы типа IconTreeNormal, IconTreeSelected - то сейчас я бы их просто заменил на переменные (или по их именам нашёл места кода) - а ща надо всё вспоминать вручную.

Если же у нас сдвинутся все биты - то тогда да, придётся и DWORD тоже изменять.
Но опять же, если у нас используются поименованные константы, то нам проще сделать везде в коде поиск по слову AlarmDrainVanna и найти, где оно используется.

Если говорить о Входах и Выходах - то я тут использую концепт создания IO-переменных. Вот, погляди у меня тут, я про это писал: https://cs-cs.net/technologii-testir...a-plk#4_____io

1exan Идея КРУТАЯ! Мне не надо (я не люблю прямую адресацию), но прям респектище!