Преобразование проекта * .c / *. H (скомпилированного как C ++) в * .cpp / *. Hpp - PullRequest
3 голосов
/ 18 июля 2011

Вопрос: каков наилучший способ преобразовать основанный на .c / .h проект (который принудительно компилируется как C ++ через make-файлы) в .cpp / .hppоснованный проект?

Очевидно, что это трехэтапный процесс.Первым было бы переименовать все с * .c в конце на * .cpp;второе - переименовать все с * .h в конце в * .hpp.Я поймал себя на том, что это третий шаг - каким-то образом составить список имен файлов /, которые были / названы (то есть myfile.c), затем выполнить итерацию по каждому поврежденному файлу и заменить каждый экземпляр старого имени файла нановый (myfile.c -> myfile.cpp).Очевидно, что это нужно сделать, чтобы исходные файлы могли найти все, что им нужно.

Исходный код, о котором идет речь, состоит из около 2700 отдельных исходных файлов.

Причина, по которой яЭто происходит главным образом потому, что я портирую указанный пакет программного обеспечения на Mac OS X, и это связано с Xcode.Все становится чертовски грязным, пытаясь точно отслеживать, что такое C, C ++ и связанные с ними заголовки (затем переопределяет компилятор для компиляции C ++).Было бы намного проще, если бы все C ++ было * .cpp (с соответствующими заголовками * .hpp), с тех пор я могу просто оставить Xcode с настройкой компилятора по умолчанию в соответствии с расширением файла, и все должно работать без какого-либо необычного вмешательства в мойконец.

Я должен также отметить, что я точно знаю, какие файлы нужно конвертировать, потому что они уже компилируются должным образом и разумным образом, если я переопределяю XCode для компиляции как C ++.Это не проблема - моя проблема в том, чтобы выяснить, как все переименовать, затем запустить через все файлы и обновить # include.

Заранее спасибо!-Кевеновые чаевые

Ответы [ 2 ]

6 голосов
/ 18 июля 2011

Вам не нужно связываться с заголовками. filename.h - отличное имя для заголовка C ++.

Если вы не используете старый make-файл, но создаете новый проект XCode, тогда у вас есть только один шаг:

  • Переименуйте * .c в * .cpp

Если make-файл был написан правильно (с использованием шаблонов правил, а не конкретных правил для каждого файла), там также не должно быть никаких изменений.

1 голос
/ 18 июля 2011

Нет причин переименовывать эти заголовочные и исходные файлы языка C в C ++, и есть много причин не делать этого.Только три из многих:

Причина № 1: C и C ++ расходятся, разные языки.Принудительная компиляция файла C, как если бы это был C ++, рискует вызвать ошибку.

Причина № 2: Xcode может обрабатывать C, C ++ и C и C ++, смешанные вместе.

Причина № 3:C ++ может легко вызывать процедуры на C.Все, что вам нужно сделать, это обернуть объявления этих функций C в конструкцию extern "C" { /* C declarations here */ }.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...