В обратном порядке:
(3). Вам нужны ваши собственные процедуры управления памятью, если не по любой другой причине, а просто потому, что вы ожидаете, что она может быть перенесена на платформу без базовой ОС. Тогда вам также понадобится реализация почти для всего остального: строковых библиотек, математических библиотек и т. Д. Вы должны либо сами кодировать их, либо пытаться найти готовые библиотеки кода, которые предоставляют их для каждой платформы.
(2). ОС и ЦП являются несколько ортогональными переменными. Возможно, вам лучше будет создать два уровня абстракции (один для разных операционных систем, один для разных аппаратных платформ), а затем включить / переопределить определения по мере необходимости для каждой новой платформы. Но да, уровень абстракции является более управляемым решением, чем загромождать ваш код целыми ордами # ifdefs.
(1). Это не простой вопрос. Например, если вы ожидаете, что ваша библиотека будет работать на встроенной системе или даже на микроконтроллере, то вполне вероятно, что не все функции ANSI C доступны, в зависимости от уровня зрелости инструментов разработки. Также могут быть ограничения, не обязательно связанные с самим языком. Аппаратные блоки с плавающей запятой относительно редко встречаются во встроенных системах. Размеры стеков могут быть ограничены и т. Д. Я предлагаю вам сделать обзор интересующих вас платформ и попытаться выбрать общее подмножество.
(0). С экономической (или даже практической) точки зрения вы могли бы обнаружить, что предпочтительнее разработать довольно обширное подмножество, которое поддерживается в ваших наиболее распространенных целевых платформах, и реорганизовать свой код, если вы встретите новую платформу. Попытка ограничить себя только общим подмножеством most может существенно подорвать ваши усилия по разработке и эффективность вашей библиотеки в чуть более мощных системах.
(- 1). Вы должны понять из-за нехватки (или даже полного отсутствия) библиотек с требуемым уровнем переносимости, что то, чего вы хотите достичь, не будет легким. Будьте готовы!