Страницы

Поиск по вопросам

суббота, 9 марта 2019 г.

Кросплатформенный код на C, теоретические проблемы

Понимаю что вопрос дурацкий, но тем не менее :) В каких случаях неверно утверждение: "если код на pure C, использующий только стандартные библиотеки, собирается и работает под linux-32, linux-64 и win-32, то он без дополнительных мер соберётся и корректно заработает под win64"?
В принципе ответ очевиден: например, в тех случаях, где есть завязка на разрядность, совмещённая с "ифдеф виндовс". Но есть практические примеры не таких очевидных вещей?


Ответ

Как уже было сказано выше, многое зависит не только от платформы, но и от компилятора - часто именно от компилятора.
Для разрешения ситуаций с размерами и разрядностью иногда создаются внутренние типы, фактический смысл которых зависит от платформы. Так например у Apple CGFloat в 32-битной системе это float, а в 64-битной - double.
Для пущей совместимости могу посоветовать собирать проект одним и тем же компилятором на разных платформах.

Комментариев нет:

Отправить комментарий