将*.c/*.h项目(编译为c+;+;)转换为*.cpp/*.hpp 问题:将基于C/.h的项目(通过C++文件强制编译成C++)转换为基于.CPP/HPP的项目的最佳方式是什么?

将*.c/*.h项目(编译为c+;+;)转换为*.cpp/*.hpp 问题:将基于C/.h的项目(通过C++文件强制编译成C++)转换为基于.CPP/HPP的项目的最佳方式是什么?,c++,batch-file,include,rename,C++,Batch File,Include,Rename,显然,这是一个三步过程。第一种方法是将末尾带有*.c的所有内容重命名为*.cpp;第二种方法是将末尾带有*.h的所有内容重命名为*.hpp。我所关注的是第三步——以某种方式建立一个文件名列表(即myfile.c),然后遍历每个受影响的文件,并用新文件替换旧文件名的每个实例(myfile.c->myfile.cpp)。显然,必须这样做,以便源文件仍然可以找到所需的一切 所讨论的源代码由大约2700个单独的源文件组成 我之所以这么做,主要是因为我正在将上述软件包移植到MacOSX,这涉及到Xcode

显然,这是一个三步过程。第一种方法是将末尾带有*.c的所有内容重命名为*.cpp;第二种方法是将末尾带有*.h的所有内容重命名为*.hpp。我所关注的是第三步——以某种方式建立一个文件名列表(即myfile.c),然后遍历每个受影响的文件,并用新文件替换旧文件名的每个实例(myfile.c->myfile.cpp)。显然,必须这样做,以便源文件仍然可以找到所需的一切

所讨论的源代码由大约2700个单独的源文件组成

我之所以这么做,主要是因为我正在将上述软件包移植到MacOSX,这涉及到Xcode。事情变得血腥混乱,试图准确地跟踪C、C++和相关联的标题(然后重写C++编译的编译器)。如果所有的C++都是*.CPP(关联的标题是*.HPP),那就简单多了,从那时起,我就可以把XCODE放在默认的编译器设置中,就像文件扩展名一样,所有的工作都不需要我的任何花哨的干预。 我也应该注意到,我确切地知道需要转换什么文件,因为如果我将XCODE编译为C++,它们已经正确地编译成一种明智的方式。这不是问题-我的问题是试图找出如何批量重命名所有内容,然后运行所有文件并更新#includes

提前谢谢你!
- Keven翻转

< p>没有理由将C语言标题和源文件重命名为C++,有很多原因不可以。只是其中的三个:

<>理由1:C和C++是发散的,不同的语言。强制编译一个C文件,就像它是C++一样,引入了一个bug。

理由2:XCODER可以处理C、C++、C和C++混合在一起。


理由3:C++可以很容易调用C例程。您所需要做的就是将这些C函数的声明包装在

外部“C”{/*C声明这里*/}
构造中。

您不需要弄乱标题。文件名.h是C++标题的好名字。 如果您不是使用旧的makefile,而是创建一个新的XCode项目,那么您只有一个步骤:

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

如果makefile编写正确(使用规则模式,而不是特定的每个文件规则),也不应该有任何改变。

为什么你编译C文件作为C++?@亚当:因为它们包含C++代码?听起来好像C文件真的包含C++源代码。我想你可能误解了OP。我认为他说他的项目已经在建。C文件是C++(无论如何都是Biasro)。他想规范文件名,吉诃多是对的。该项目已经构建为一组*.c文件——这只是因为Mag文件被设置为强制编译/CUAL/C文件作为C++。如果你不强制编译源代码为C++,那么它就惨了——因为*.c文件是C++的,那么它们是普通的旧C。因此,我的原始问题是,我正在寻找一种批量重命名所有*.c源文件和所有*.h源文件到它们*.CPP和*.Hpp等价物的方法,然后迭代每个文件,确保本包含所有指向更新的名称。如果这是你想做的,那么,你的答案是正确的:只需重命名你的XX.C文件,这样他们就有了一个有效的C++后缀,一个.cc,.c.,cxx,.cp,C++,.cp,.or c。(虽然我建议不要在Mac上使用后两种,默认情况下文件名不区分大小写)。没有理由重命名头文件。