Семантика базовых языковых конструкций для C и C ++ остается более или менее идентичной, и C ++ был разработан для добавления структурных элементов в C, а не для изменения или удаления существующих возможностей языка.Поэтому, если вы столкнетесь с трудностями при создании компилятора C ++, его компиляция также будет относительно тривиальной (по крайней мере для ISO C90).C99 существенно отличается от C ++, и некоторые компиляторы C ++ либо не поддерживают C99, либо включают функции C99 в качестве расширений в свой компилятор C ++.
C ++ также хорошо взаимодействует с C, C ++, например, полностью включает ISOСтандартная библиотека C90, и может связать любую библиотеку C.Для библиотек C ++ может быть предоставлен интерфейс, совместимый с C-Linkage, для использования кодом C (хотя это часто не так просто, как C ++, вызывающий код C).
Ранние инструменты C ++ были не настоящими компиляторами, а скорее трансляторами C ++, которые генерировалиC-код для компиляции нативным C-компилятором.Comeau C ++ по-прежнему использует этот подход для поддержки C ++ для любой цели с помощью компилятора C, что полезно во встроенных средах, где некоторые цели плохо обслуживаются инструментами C ++.