C - Что такое реализации C? - PullRequest
3 голосов
/ 15 апреля 2019

Не могли бы вы дать мне объяснение того, что такое реализация, черпая вдохновение из трех выделенных выражений?

Из "C Primer Plus"> Языковые стандарты

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

Ответы [ 3 ]

6 голосов
/ 15 апреля 2019

Стандартная соответствующая реализация C состоит из компилятора, который переводит единицы компиляции в соответствии с требованиями стандарта, реализации стандартной библиотеки для всех функций, требуемых стандартом, и что-то (обычно компоновщик), который помещаетвсе вместе, чтобы построить исполняемый файл.Фактически реализация также включает в себя все программное обеспечение, необходимое для запуска созданного исполняемого файла.

Мы обычно говорим о компиляторах (gcc, clang, msvc), когда мы должны говорить о среде разработки C.И внутри каждой системы vendor у вас могут быть разные реализации, потому что, например, gcc или clang могут генерировать исполняемые файлы для разных размеров int (32 или 64 бита) и, в конечном итоге, разных порядков байтов.Каждая конфигурация представляет собой конкретную реализацию.

Чтобы быть более исчерпывающим, следует отметить, что поддержка стандартной библиотеки может быть необязательной в так называемой автономной среде выполнения (в отличие от размещенная среда исполнения ).В реальном мире автономный режим используется для разработки ядра, поскольку ядро ​​должно иметь возможность запуска до того, как станут доступны все функции из стандартной библиотеки.В противном случае у нас возникла бы проблема типа «курица с яйцом», если бы ядру требовались функции, которые оно может обеспечить только при полной загрузке ...


Ссылки: В проекте n1570 для C11 реализация определяется как:

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

1 голос
/ 15 апреля 2019

C обычно реализуется компилятором C. В этом абзаце вы можете просто заменить это соответственно.

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

Стандарт C определяется на основе "абстрактной машины", которая ведет себя так, как описывает стандарт, но не имеет никаких других требований и определяет отображение на реальных машинах в качестве упражнения для разработчика.

1 голос
/ 15 апреля 2019

Реализация - это приложение к конкретной спецификации.

Например, спецификация может быть международным стандартом ISO, а реализация может быть gcc или clang;компиляторы, которые реализовали стандартные спецификации в сочетании с реализацией стандартной библиотеки.

...