Обоснование «поддержка плавающих типов обязательна для соответствующей автономной реализации»

#c #language-lawyer #c11 #standards-compliance #freestanding

#c #язык-юрист #c11 #соответствие стандартам #отдельно стоящий

Вопрос:

Сценарий:

  1. Клиент не использует плавающие типы. (Примечание: У цели нет FPU.)
  2. Поставщик предоставляет заказчику автономную реализацию без поддержки плавающих типов.

Вопрос: требуется ли поставщику поддерживать плавающие типы (несмотря на то, что они не будут использоваться) для предоставления соответствующей автономной реализации? Кажется, да.

Однако, какое обоснование поддержки плавающих типов является обязательным для соответствующей автономной реализации?

Комментарии:

1. Когда вы говорите, что автономный компилятор не поддерживает тип с плавающей запятой, вы имеете в виду, что фактические ключевые слова типа float и double не существуют? Или что все операции с плавающей запятой отнесены к определенным библиотекам, которые по умолчанию не связаны (что очень часто встречается у компиляторов, ориентированных на встроенные системы)?

2. Рассмотрим связанный с этим вопрос Q1: Предположим, что компилятор Q не поддерживает обязательную функцию X. Предположим, что клиент не использует функцию X. Соответствует ли Q? Рассмотрим связанный с этим вопрос Q2: Предположим, что компилятор Q не поддерживает обязательную функцию X. Соответствует ли Q? Чем эти вопросы отличаются от опубликованного вопроса?

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

4. C применяет различные странные вещи для автономных реализаций, int_least64_t был бы еще одним таким примером. В целом комитету C всегда казалось, что ему не хватает опыта работы со встроенными системами — почему C не стандартизирован interrupt и asm находится за пределами моего понимания. Даже C получил asm .

5. pmor, если проблема заключается только в соответствии , то «Клиент не использует плавающие типы». это не имеет значения. Соответствие не зависит от заказчика, только от реализации и стандарта. Если «Клиент не использует плавающие типы». важно, тогда соответствие включению FP не имеет значения, поскольку оно не используется. Что важно, так это удовлетворение реальных потребностей клиентов.