Вопрос, который у меня есть, в основном связан с частью четвертой статьи,.
Две формы согласованной реализации организованы и автономны. Соответствующая размещенная реализация должна принимать любую строго соответствующую программу.
Как я понимаю, это типичная среда приложения, с файловыми системами, выделенной памятью и потоками...
Соответствующая автономная реализация должна принимать любую строго соответствующую программу, в которой использование функций, указанных в разделе библиотеки (раздел 7), ограничивается содержимым стандартных заголовков
<float.h>
,<iso646.h>
,<limits.h>
,<stdalign.h>
,<stdarg.h>
,<stdbool.h>
,<stddef.h>
,<stdint.h>
и<stdnoreturn.h>
.
... и это представляет собой типичное ядро и/или встроенную минимальную среду, в которой нет стандартных файловых систем, выделенной памяти или потоков (среди прочего).
Соответствующая реализация может иметь расширения (включая дополнительные функции библиотеки) при условии, что они не изменят поведение любой строго соответствующей программы.
Кажется, что это дает хостинговой реализации свободу называть себя размещенной или независимой реализацией, а когда речь идет о файловых системах, выделенной памяти или потоках (между прочим), они могут подпадать под категорию расширения, чтобы она может просто реализовать интерфейс, который каждый раз возвращает значение, указывающее ошибки. Просто чтобы назвать несколько:
-
fopen
,fgets
иmalloc
могут возвращатьNULL
-
fprintf
,fscanf
,fputc
иfgetc
могут возвращатьEOF
-
thrd_create
может возвращатьthrd_error
(указывая, что "запрос не может быть выполнен" )
Это подразумевает, что раздел 4 раздела различия, который дает шесть, практически не имеет смысла. Существуют ли какие-либо требования, гарантирующие некоторый фактический уровень функциональности для этих функций в размещенных и автономных реализациях? Например, требуется ли, чтобы эти функции, на самом деле, могли возвращать что-то иное, чем их соответствующие значения отказа?