Я работал над несколькими встроенными системами. Все они использовали typedef
(или #defines
) для таких типов, как UINT32
.
Это хорошая методика, поскольку она приводит к увеличению размера типа для программиста и делает вас более осведомленным о возможностях переполнения и т.д.
Но на некоторых системах вы знаете, что компилятор и процессор не будут меняться в течение всего жизненного цикла проекта.
Итак, что должно повлиять на ваше решение о создании и применении конкретных проектов?
ИЗМЕНИТЬ Я думаю, мне удалось потерять суть моего вопроса, и, возможно, это действительно два.
При встроенном программировании вам могут потребоваться типы определенного размера для интерфейсов, а также для работы с ограниченными ресурсами, такими как оперативная память. Этого нельзя избежать, но вы можете использовать основные типы из компилятора.
Для всего остального типы имеют меньшее значение.
Вы должны быть осторожны, чтобы не вызвать переполнение и, возможно, потребуется следить за использованием регистров и стека. Это может привести вас к UINT16
, UCHAR
.
Использование типов, таких как UCHAR
, может добавить "пушок" компилятора. Поскольку регистры обычно больше, некоторые компиляторы могут добавить код, чтобы заставить результат в тип.
я ++;может стать
ADD REG, 1 И REG, 0xFFчто не требуется.
Итак, я думаю, что мой вопрос должен был быть: -
учитывая ограничения встроенного программного обеспечения, что является лучшей политикой для проекта, в котором будет работать много людей, не все из которых будут иметь одинаковый уровень опыта.