Является ли C ++ 17 основанным на C17?
№
Нормативный справочник по C ++ на текущий моментрабочий проект - C11 .
Если сейчас это C11, то это было самое позднее C11 для C ++ 17.101
Вот соответствующее предложение (хотя я не уверен, что именно это предложение было принято).
Я заметилчто многие из новых функций в C ++ 17 были из C17.
У меня нет.Я не сравнивал два.Если аналогичные функции были добавлены к обоим, это, вероятно, совпадение.Тем не менее, поскольку C17 на самом деле было просто «исправлением ошибки», обновление C11 кажется маловероятным.
Существует ли какая-либо связь между двумя стандартами?
Не совсем,нет.Конечно, две рабочие группы будут общаться друг с другом, но оба языка независимы.
Существуют ли какие-либо практические различия между функциями C и их эквивалентами в C ++?
Без конкретных примеров я не могу сказать, но опять же, вы должны рассматривать их как отдельные и независимые вещи.
C ++ только «основан на» C с точки зрения библиотечных и языковых возможностей, которые он «наследует»».Однако обратите внимание, что это не оптовый импорт C11 в C ++ 17; это не так, как это работает .
Кстати, хотя термин «C17» является приемлемым (и широко распространенным) названием для него, и хотя его макрос __STDC_VERSION__
является201710L
, это действительно"C18" (и технически ISO / IEC 9899: 2018 ).
(ср. C ++ 98's __cplusplus
это 199711L
; именно так иногда и срабатывает время, когда публикация слегка растягивается на следующий год после того, как такие вещи были согласованы и заморожены.)