Я понимаю, что язык C является стандартом ISO , и я могу видеть из Википедии, что стандарт включает в себя 29 заголовочных файлов , и что в соответствии с этими заголовочными файлами, Cприложение теоретически «переносимо».
На практике, однако, недавно я пытался создать учебник на простом C-сервере HTTP , который использует заголовочные файлы, которые не являются частью стандарта C.Таким образом, в этом случае самое простое из приложений, которое я могу себе представить, - приложение C, содержащее одну функцию int main(void)
, которая имеет длину менее 100 строк, с целью прослушивания через сетевой интерфейс выходит за рамки стандарта C?
В этом случае, какова связь между языком C как спецификацией и (если я пишу приложение для Linux) спецификацией POSIX как языком?
Насколько я могу судить"man7.org" предоставляет список заголовочных файлов C, которые определяют API всех систем Unix / Linux (я предполагаю, что это то же самое, что и POSIX), а также список системных вызовов дляПлатформа Linux.
Это включает 82 заголовочных файла, из которых заголовки стандартной библиотеки 29 C являются подмножеством, и около 10 000 системных вызовов (по крайней мере, я предполагаю, что все в этом списке ,НЕ является заголовочным файлом - это системный вызов)и использовать специальные заголовочные файлы ОС.Разве не было бы более точным сказать, что программирование приложения для запуска в Linux на самом деле было бы «программированием POSIX»?
Полагаю, можно было бы также придерживаться стандартной библиотеки и определять собственные файлы заголовков дляреализация переносимой логики в системах POSIX и не POSIX (включая подпрограммы сборки для конкретной платформы).Это когда-нибудь было сделано?