Автоматически разделяет (рефакторинг) .h на заголовок и реализацию (h+cpp)
При написании кода на C++ я часто начинаю с написания полного кода "реализации" в моих заголовочных файлах, а затем мне нужно реорганизовать реализацию в файл.cpp.
Это замечательно, но я считаю этот процесс трудоемким, но в остальном довольно легким, поэтому я подумал: а есть ли какой-нибудь автоматизированный способ сделать это?
В частности, я хочу преобразовать все определения классов и функций в .h
декларации, и пусть они будут объявлены в новом .cpp
файл.
Я использую xcode, но я открыт для любых решений.
3 ответа
Существует Lazy C++, где вы пишете только один файл.lzz, и он генерирует.h и.cpp для вас.
Я действительно с нетерпением жду модулей C++, где вы пишете только.cpp, а файл импорта генерируется автоматически. Но нам придется подождать несколько лет, хотя Clang начал внедрять модули. Вот несколько примеров.
Вас также может заинтересовать функция Eclipse "Refactor/Toggle function". Однако это не всегда работает должным образом.
Вы можете использовать некоторые инструменты, такие как Makeheaders
http://www.hwaci.com/sw/mkhdr/
но в целом эти инструменты не являются полными, особенно в новых файлах C++11.
Модули C++20, по сути, делают это за нас
Как упоминалось по адресу: https://quuxplusone.github.io/blog/2019/11/07/modular-hello-world/ clang 2019-11 реализует его вместе:
clang++ -std=c++2a -c helloworld.cpp -Xclang -emit-module-interface -o helloworld.pcm
clang++ -std=c++2a -c -fprebuilt-module-path=. -o helloworld.o helloworld.cpp
clang++ -std=c++2a -fprebuilt-module-path=. -o main.out main.cpp helloworld.o
где:
helloworld.cpp
содержит реализациюhelloworld.pcm
это предварительно скомпилированный модуль, в основном автоматически извлеченный заголовок из.cpp
(но в формате внутреннего языка clang), который используетсяmain.cpp
без.hpp
Так что в основном clang - это инструмент, и поэтому синтаксический анализ идеален.