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