Имхо, генерация заголовков из источника - плохая идея и нецелесообразна.
Заголовки могут содержать больше информации, чем просто имена функций и параметры.
Вот несколько примеров:
C++
может определять класс abstract , для которого исходный файл может быть не нужен
- Шаблон может быть определен только в заголовочном файле
- Параметры по умолчанию указываются только в определении класса (таким образом, в заголовочном файле)
Обычно вы пишете свой заголовок, а затем пишете реализацию в соответствующем исходном файле.
Я думаю, что наоборот - нелогично и не соответствует духу C
или C++
.
Единственное исключение заключается в том, что static функции. Статическая функция появляется только в исходном файле (.c
или .cpp
) и не может (очевидно) использоваться в другом месте.
Хотя я согласен, что копировать определение заголовка метода / функции в исходный файл часто раздражает, но вы, вероятно, можете настроить редактор кода, чтобы облегчить это. Я использую Vim, и быстрый скрипт помог мне с этим очень . Я думаю, что подобное решение существует для большинства других редакторов.
В любом случае, хотя это может показаться раздражающим, имейте в виду, что оно также дает большую гибкость. Вы можете распространять файлы заголовков (.h
, .hpp
или что-либо еще), а затем прозрачно изменять реализацию в исходных файлах.
Кроме того, просто чтобы упомянуть, нет такой вещи как C/C++
: есть C
и есть C++
; это разные языки (которые действительно имеют много общего, но все же).