Цитата(RedSIL @ Aug 17 2008, 00:25)
А системные вызовы у каждой системы разве не свои? То есть под каждую систему усё равно надо исходники в некторых случаях, где они используются, править... этот самый OS SDK для каждой системы ведь свой. И линкер для каждой системы свой нужен... а чем си от си плюс плюс принципиально отличается? Вроде как тем, шо там единая какая-то платформа есть - как вы и сказали, шо кто-то там для того, шоб легче с одной на другую систему проги переводить, придумал это.
Есть стандартная библиотека stdlib (http://en.wikipedia.org/wiki/Stdlib.h), которая содержит ряд важных функций, входящих в
стандарт языка. Например fread, fwrite, fopen и прочие, являясь частью стандартной библиотеки, на деле представляют собой обертку вокруг системных вызовов. Меня, как программиста, то, как они реализованы, в идеале не волнует. Я знаю, что это должно быть по стандарту. И баста >.<
Таким образом приходим к тому, что хеллоу ворлды будут собираться на большинстве распространенных ОС при наличии нормального компилятора.
Если появляется желание начать дергать специфические системные вызовы, которые образуют API ОС (например WinAPI), то тут уже ничего не поделаешь (в частности это применимо к Windows и прочим ОС, которые POSIX-несовместимые).
По поводу различных API и системных вызовов рекомендуется к прочтению это
http://ru.wikipedia.org/wiki/Интерфейс_про...ания_приложенийЕсть библиотеки, которые позволяют писать кроссплатформенные программы на языках Си и С++. Например Qt и wxWidgets (последняя для UI-контролов дергает нативные API - в венде WinAPI, в линуксе GTK+ или же еще что-либо по вкусу)
Принципиальное отличие Си от Си++ в том, что последний является языком более-менее объектно-ориентированным (есть классы, шаблоны, ссылки, перегрузка операций и еще куча вещей, от злоупотребления которых можно тронуться умом) и стоит выше голого Си по уровню абстракции.