LINUX.ORG.RU

Вопрос по C и C++: как определения автоматически превратить в декларации?

 ,


0

2

Есть какая-нибудь командно-строчная утилита для этого?

Возможно, что-то такое для автоматического создания .h файлов по существующим .c файлам. Но только хорошо работающее, поддерживающее всякие современные нюансы

Нужно это для автоматизации создания биндингов для других языков. Но не хочется велосипед изобретать.

Перемещено mono из talks

ВЫБРАННОЕ РЕШЕНИЕ: Распарсил в AST с помощью libclang и выкинул compound statements.



Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от zx_gamer

для личных программ я так и делаю

лучше всегда отдавать себе отчёт, насколько нужны те или иные подходы в кодинге

а то многие программисты, например, наворачивают шаблоны там где они не нужны, потому что «ну как это с++ без шаблонов!»

ещё чаще нагромождают ооп там где в нём нет смысла

не надо комплексовать, в общем, далеко не каждая программа станет общеиспользуемой библиотекой

anonymous
()
Ответ на: комментарий от masa

если у тебя код вызывается в одном месте

Нужно это для автоматизации создания биндингов для других языков.

:)

По теме — я обычно, если что-то вызывается за пределами одного файла исходного кода, сразу начинаю с прототипа, потом превращаю его в реализацию. Благо нормальные IDE позволяют делать это одной командой. Помимо прочего, это снимает многие вопросы, если код, кроме меня, будет читать ещё хоть один человек (или я сам через год).

В случае ТСа я бы начал с оценки количества преобразуемых функций/методов. Если их не больше полусотни — дешевле взять и по-бырому скопипастить руками (особенно если под рукой есть IDE, одной клавишей переключающая .h и .cpp). Если больше — таки да, можно озаботиться поиском командной утилиты.

hobbit ★★★★★
()
Ответ на: комментарий от anonymous

Большая. Они не часть API, поэтому их можно менять как угодно, и это не должно приводить к пересборке всех зависящих файлов и т.д. В больших проектах на плюсах, обильно обмазанных шаблонами, где при изменении какого-нибудь хидера в корне графа можно получить пересборку на 4 часа, это вот очень актуально.

Тут можно сказать, конечно, что сама идея заголовочных файлов дико сосёт, и я с этим абсолютно согласен.

ТС, используй модули. Они уже 4 года как в стандарте.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Тут можно сказать, конечно, что сама идея заголовочных файлов дико сосёт, и я с этим абсолютно согласен.

У меня этот вопрос решён разработкой API, которое позволяет на основе метаданных в run-time создавать и использовать в программе.
Структуры есть, но компилятор о них ничего не знает.
Да и API не прибито гвоздями к какому-либо компилятору.

Forum0888
()
Ответ на: комментарий от Forum0888

У меня этот вопрос решён разработкой API, которое позволяет на основе метаданных в run-time создавать и использовать в программе.

Структуры есть, но компилятор о них ничего не знает.

Статическая типизация? Какая такая статическая типизация?

hateyoufeel ★★★★★
()
Ответ на: комментарий от thunar

Да можно 100500 вариантов придумать.

Я в свое время дальше ходил, задолбало меня что в одном проекте каждый чих совместно влиял на:

  1. хидер клиента

  2. cpp файл клиента

  3. хидер сервера

  4. cpp файл сервера

  5. файл с документацией

Дай думаю поверну все на 90 градусов, пусть каждая фича описывается в одном месте а скрипт ее раскидывает по нужным файлам перед компиляцией.

А потом я узнал про литературное программирование Кнута;-)

AntonI ★★★★★
()
Ответ на: комментарий от witaway

Удаление тел функций мне нужно чтобы сделать биндинги для D.

В общем, моя цель - избавление от C и (особенно) от C++

А ты предлагаешь таким образом распространить их ещё больше. Так что - нет.

ahdenchik
() автор топика