Поскольку Objective-C является строгим надмножеством C, а C ++ содержит очень большое количество, очень похожее на C, для синтаксического анализа либо вам уже нужно иметь возможность анализировать C. В этом случае вывод в машинный код ивывод на большее количество C-кода существенно не отличается по стоимости обработки, при этом основная стоимость для пользователя заключается в том, что компиляция теперь занимает столько же времени, сколько первоначально требовалось, плюс количество времени, которое занимает второй компилятор.
Любая попыткаскопируйте и вставьте материал, похожий на C, и переведите остальное вокруг него, что может привести к проблемам.Во-первых, C ++ не является строгим надмножеством C, поэтому вещи, похожие на C, не обязательно компилируются точно так же (особенно по сравнению с C99).И даже если бы они это сделали, предположив, что пользователь допустил ошибку в своих материалах на C, компиляторы не склонны предоставлять информацию об ошибках в машиночитаемом формате, поэтому слою Objective-C-C было бы очень сложно датьПользователь получает значимую ошибку после получения, например, «error at line 99».
Тем не менее, во многих пакетах компиляторов, таких как GCC и даже в большей степени, например, в предстоящем Clang + LLVM, используется промежуточная форма для разъединения известного бита.о специфике одной архитектуры, которая знает специфику конкретного языка.Тем не менее, это, как правило, скорее структура данных, чем нечто преднамеренно простое для выражения в качестве письменного языка.
Итак: компиляторы не работают так по чисто практическим причинам.