Подтвердить что ты не робот

Есть ли способ скомпилировать С++ для кода C?

У меня есть программа, которая настраивается пользователем с помощью классов С++ и тот же класс должен использоваться для настройки программы, которая может использовать только подмножество C99 (Open CL Language).

Итак, мой вопрос: Есть ли способ скомпилировать С++ для C-Code?

Open Source будет замечательным!

4b9b3361

Ответ 1

В C++ FAQ есть список возможностей: возможно ли конвертировать C++ в C? ,

Короче говоря, это говорит о том, что вы не можете ожидать, что это даст вам особенно читаемый код. Подумайте о сложностях; множественное наследование, разрешение виртуальных функций, шаблоны, перегрузка операторов и т.д. и т.д. Не существует четкого и краткого способа выразить эти понятия в чистом C. Однако если все, что вам нужно, это компилируемый C, то это, вероятно, способ идти.

Ответ 2

Вы можете использовать clang интерфейс С++ для генерации байт-кода llvm и использовать llc для испускания кода C, см. llc doc, особенно опция c. Оба они с открытым исходным кодом, с лицензиями BSD.

Ответ 3

Компилятор Comeau, похоже, способен это сделать. Из Wikipedia "Вместо того, чтобы напрямую создавать исполняемый файл, Comeau C/С++ выводит код C и требует отдельного компилятора C для создания финального программа".

Я никогда не пробовал, хотя.

Ответ 4

  1. Comeau Computing предлагает компилятор, основанный на интерфейсе Edison Design Group, который выводит C-код.
  2. LLVM - это загружаемый компилятор, который испускает C-код. Смотрите также здесь и здесь. Вот пример преобразования C++ в C через LLVM.
  3. Cfront, оригинальная реализация C++, выполненная Бьярном Страуструпом и другими в AT & T, генерирует C-код. Однако у него есть две проблемы: было трудно получить лицензию с середины 90-х годов, когда она начала проходить через лабиринт смен владельцев, и в то же время разработка прекратилась, поэтому она не исправляет ошибки и не поддерживает никаких из более новых языковых функций (например, исключения, пространства имен, RTTI, шаблоны элементов).
  4. Вопреки распространенному мифу, на момент написания этой статьи не существует версии g++, которая переводила бы C++ в C. Такая вещь кажется выполнимой, но я не знаю, что кто-то на самом деле это сделал (пока).

http://www.cs.technion.ac.il/users/yechiel/C++-faq/convert-to-c.html