О проекте: Проект по конверсии кода, написанного с применением новых конструкций, внесенных в C++ 11, в код, совместимый с C++ 98.
При кросс-платформенной разработке на языке C++ часто возникает головная боль с попыткой получить единую кодовую базу. Традиционное решение — туча макросов, проверяющих версию C++ и перекрывающих реализацию фрагментов кода для разных по возможностям компиляторов, очень легко замусоривает код. Поэтому обладая чистым, отлаженным кодом, написанным с применением весьма полезных функций C++ 11, таких как range-based for, enum-классы, спецификаторов delete, default, override и т.д., и задачей заставить его собраться с применением например GCC 4.3.4 весьма грустно переписывать его на C++ 98. Конечно, может возникнуть вопрос, а почему бы не взять просто более новый GCC, например 5.4? К сожалению, это возможно не всегда. Например, если имеешь дело с производителем POS-терминала и его Platform SDK, содержащим конкретную версию GCC и не намеренного ничего менять. Конвертор явился дешевой альтернативой варианту переписать все места, где в коде применялся C++ 11, позволившей сохранить единую кодовую базу для всех платформ, использующую возможности, включенные C++ 11. Интегрированный через интерфейс командной строки в процедуру автоматической сборки он позволил сохранить большой объем человеко-часов.
Самым правильным видится интеграция вызова этого конвертора в процесс автоматической сборки. Все может выглядеть, например так:
Конвертер запускается с командной строки. Предусмотрено два варианта запуска:
Запуск в режиме конверсии одного файла:
ccc.exe <source> <target>
где <source> — файл для преобразования, <target> — имя файла в который следует записать результат.
Запуск в режиме конверсии всех файлов в папке:
ccc.exe <folder>
где <folder> — папка для преобразования (конвертер ищет в ней и во всех ее подкаталогах файлы *.h и *.cpp, конвертирует код и заменяет содержимое).
Программа раздается бесплатно, использовать можно.
Роль в проекте: автор концепции и реализации.
Тип проекта: научно-исследовательский, бесплатно-распространяемый.
Состояние: активен, выпущена версия, эксплуатируется.
Участие в проекте: c 2016 года.
Операционные системы: Windows, Linux.
Правообладатель и распространитель: Куриленко И.Е.