Да; Стандартная библиотека ISO C . Он может не охватывать все функции, которые вам нужны, но это именно потому, что он является универсальным, и поэтому также является наименьшим общим знаменателем . Он поддерживает только те функции, которые можно обоснованно ожидать на большинстве аппаратных средств, включая встроенные системы.
Путь к этому, возможно, заключается в том, чтобы указать диапазон целевых платформ, которые вам необходимо поддерживать, а затем домены приложений (например, GUI, работа в сети, многопоточность, обработка изображений, обработка файлов и т. Д.), А затем выберите индивидуальные кроссплатформенные библиотеки, которые соответствуют вашим потребностям. Вероятно, не существует ни одной библиотеки для удовлетворения всех ваших потребностей, а в некоторых случаях вообще нет общей библиотеки.
Тем не менее, вы всегда будете лучше обслуживаться в этом отношении, приняв C ++, где вы можете использовать любую библиотеку C, а также библиотеки C ++. Стандартная библиотека C ++ не только больше, но и такие библиотеки, как Boost, wxWidgets, ACE, также охватывают более широкий спектр доменов. Другой подход заключается в использовании кроссплатформенного языка, такого как Java, который решает проблему путем абстрагирования оборудования от виртуальной машины. Точно так же .NET / Mono и C # могут предоставить решение для соответственно ограниченного набора целевых платформ.
Добавлен следующий комментарий:
Аппаратная абстракция на языке, ориентированном на реальную машину (в отличие от языка виртуальных машин, такого как языки на основе Java или CLR), предоставляется операционной системой, поэтому вам, возможно, понадобится общий API-интерфейс операционной системы. POSIX, вероятно, наиболее близок к этому, будучи поддерживаемым в Linux, Unix, OSX (то есть Unix), QNX, VxWorks, BeOS и многих других; но не главное винда. Одним из способов использования POSIX в Windows является использование Cygwin. Другой способ - использовать виртуальную машину для размещения ОС POSIX, такой как Linux.