将* .c / * .h项目(编译为C ++)转换为* .cpp / * .hpp

时间:2011-07-18 01:47:22

标签: c++ batch-file include rename

问题:将基于 .c / .h的项目(通过makefile强制编译为C ++)转换为 .cpp / 的最佳方法是什么?基于.hpp的项目?

显然,这是一个三步过程。第一种方法是将* .c重命名为* .cpp;第二种方法是将* .h最后重命名为* .hpp。我要抓住的是第三步 - 以某种方式构建文件/命名/命名列表(即myfile.c),然后遍历每个受影响的文件并用旧文件名替换旧文件名的每个实例。 new(myfile.c - > myfile.cpp)。显然必须这样做,因此源文件仍然可以找到他们需要的所有内容。

有问题的源代码包含大约2700个单独的源文件。

我这样做的原因主要是因为我将所述软件包移植到Mac OS X,这涉及到Xcode。事情变得血腥凌乱,试图准确地跟踪C,C ++和相关标题是什么(然后重写编译器的C ++编译)。如果所有C ++都是* .cpp(关联标题为* .hpp)会更简单,因为那时我可以根据文件扩展名将Xcode保留在默认编译器设置中,所有内容都可以在没有任何花哨介入的情况下工作端。

我可能还应该注意到,我确切地知道需要转换哪些文件,因为如果我重写Xcode以编译为C ++,它们已经正确编译并且以理智的方式编译。这不是问题 - 我的问题是试图弄清楚如何批量重命名然后运行所有文件并更新#includes。

提前谢谢! -Keven Tipping

2 个答案:

答案 0 :(得分:6)

您不需要弄乱标题。 filename.h是C ++标题的一个非常好的名称。

如果你没有使用旧的makefile,而是创建一个新的XCode项目,那么你只有一步:

  • 将* .c重命名为* .cpp

如果makefile写得正确(使用规则模式而不是特定的每个文件规则),那么也不应该进行任何更改。

答案 1 :(得分:1)

没有理由将这些C语言头文件和源文件重命名为C ++,并且有很多理由不这样做。只有三个:

原因#1:C和C ++分歧,语言不同。强制编译C文件就好像是C ++会引入错误。

原因#2:Xcode可以处理混合在一起的C,C ++和C和C ++。

原因#3:C ++可以轻松调用C例程。您需要做的就是将这些C函数的声明包装在extern "C" { /* C declarations here */ }构造中。