Компания, с которой я работаю, предназначена для производства и обслуживания небольших встроенных систем на базе процессора 68k. Мы хотели бы двигаться вперед и прекратить поддерживать тех, кто любит что-то вроде малины Pi, поэтому я работаю над портированием внутренней библиотеки, которая использовалась для написания программного обеспечения для этих устройств, чтобы программы могли быть скомпилированы для Linux.Ограничить размер встроенных типов
Проблема, с которой я столкнулся, заключается в том, что спецификация для этих устройств поддерживает строгие типоразмеры, а именно 16-разрядные для коротких и 32-разрядных для int и long. Поскольку спецификация C только определяет минимальные размеры для типов и наши пользователи были учеными с низким уровнем образования «надлежащее кодированием» мы сталкиваемся с ситуациями, как это весь код пользователя:
typedef struct {
short int a;
short int b;
} Pair;
...
Pair * p=malloc(4);
Если можно избежать, мы бы скорее не нужно, чтобы наши пользователи активно переписывали свои программы. Повторная компиляция GCC для этого может быть вариантом, но я хотел бы знать, что это возможно, прежде чем я попытаюсь, потому что я не хочу тратить силы. Поэтому мой вопрос в основном «Есть ли какой-то способ в GCC или другом компиляторе, чтобы заставить типы определенного размера»?
вы можете использовать 'int16_t' и подобные типы. – mch
Я знаю, что «правильное» исправление предназначено для пользователей, чтобы пройти их исходный код и заменить «int» на «int16_t» и тому подобное, но я в основном ищу решение, которое не требует наших десятков внешних компаний переписать тысячи строк исходного кода. –
Кажется, это не проблема для меня. Существующий SW ожидает 16-битный короткий и 32-битный int и long. Вы нашли что-то, что говорит, что у малины Pi нет 16-битного короткого и 32-битного int и long? Дело в том, что спецификация здесь не имеет значения. Ваша задача - выбрать аппаратное обеспечение, которое соответствует требованию, чтобы шорты были 16-битными, а int и длинными 32-битными. Это почти любая 32-битная система, в которую AFAIK входит малина Pi. – user3386109