Как делает соединение с библиотеками OS C при работе Windows и Linux?

Я понимаю поставки Linux с c библиотекой, которая реализует функции ISO C и функции системного вызова, и что эта библиотека там, чтобы быть связанной против при разработке C. Однако различные компиляторы C не обязательно производят связываемый код (например, можно было бы заполнить datastructures, используемый в аргументах функции по-другому по сравнению с другим). Как встроенная c библиотека предназначена, чтобы быть связанной с тем, когда я мог использовать какой-либо компилятор для компиляции моего C? Несколько отличается история для помех по сравнению с динамическим подключением?

В соответствии с Windows, с другой стороны, каждый компилятор обеспечивает свою собственную стандартную библиотеку, которая решает часть проблемы, но системные вызовы находятся все еще в единственном наборе DLLs. Как приложения C связаны с этими DLLs успешно? Как насчет различных языков? (Тот же DLLs может использоваться pre-.Net Visual Basic, и т.д.),

6
задан abc 19 January 2010 в 00:54
поделиться

3 ответа

Японское слово обрушит правила Kinsoku Shori и удивительно просты. Они на самом деле в основном касаются символов пунктуации и не пытаются вообще держать слова непрерывными.

Я только что проверил с японским романом и действительно, оба слова в сценарии Syllabic Kana и те, что, состоящие из нескольких китайских идеограмм, обернутыми в середине безнаказанности.

-121--3926468-

Каждая платформа имеет некоторые «призывающие конвенции», что каждая реализация C должна соответствовать правильному договору об операционной системе. Для Windows, например, все функции на основе OS должны быть названы с использованием STDCALL Конвенции , в отличие от Конвенции по умолчанию C CDECL .

В Linux, поскольку стандартная библиотека C (и ядро) скомпилирована с использованием GCC, любые другие компиляторы для Linux должны убедиться, что их конвенции о вызовах совместимы с использованием GCC.

4
ответ дан 17 December 2019 в 00:09
поделиться

Второй подход имеет некоторые преимущества, такие как

  • Он позволяет вызывающим абонентам управлять временем существования выделенных памяти
  • Он позволяет вызывающим абонентам повторно использовать выделенную память для различных вызовов, которые следуют за тем же образцом
  • Он позволяет вызывающим абонентам решать, какие буфер для обеспечения, например, стека или кучи.
-121--4379000-

Японские правила обертывания слов называются kinsoku shori и удивительно просты. На самом деле они в основном озабочены символами препинания и не пытаются сохранить слова неразрывными.

Я только что проверил японский роман и действительно, как слова в сценарии слоговой каны, так и те, которые состоят из нескольких китайских идеограмм, завернуты в середину слова безнаказанно.

-121--3926468-

Стандарты. Вы заметите, что материал stdlib работает на примитивных значениях и массивах - и стандарт для этого материала довольно четко определяет, как все должно быть сделано.

0
ответ дан 17 December 2019 в 00:09
поделиться

Компиляторы приходят с их реализациями стандартной библиотеки. Просто в соответствии с Linux предполагается, что любой компилятор будет следовать тому же конвенциям версии GCC, которая составлена ​​библиотека.

В качестве совместимости это может быть проще, чем вы думаете. Существуют установленные согласованные конвенции, которые позволят компиляторам создавать действительный вызов функции, даже если функция не была скомпилирована с тем же программным обеспечением.

Поскольку структуры и прокладки вы заметите, что большинство рамки работают с непрозрачными типами, то есть указатели на структуры. Часто макет структуры даже не доступен для клиентов. Как таковые, они никогда не работают с фактическими данными, только указателями на данные, которые очищают проблему прокладки.

3
ответ дан 17 December 2019 в 00:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: