在重命名后,重命名为C ++的C文件是否可以与C ++编译器一起编译?

时间:2010-03-22 22:54:37

标签: c++ c

在重命名后,重命名为C ++的C文件将与C ++编译器兼容? 所以我有25个C文件和1个C ++文件,我不想创建Make文件或类似的东西。我想将所有C文件转换为C ++,以便简单地重命名工作或我该怎么办?

4 个答案:

答案 0 :(得分:3)

总的来说,是的。您将不得不担心名为class的变量等,sizeof字符文字,名称修改以及其他一些很少遇到的问题。如果您要将C99转换为C ++,则必须删除一些C99功能。

关于名称修改,使用extern "C"引用任何C符号。一个常见的习语是:

#ifdef __cplusplus
extern "C" {
#endif

extern int myGlobal;
extern int myFunction(void);
/* etc */

#ifdef __cplusplus
}
#endif

答案 1 :(得分:1)

取决于编译器上的somwhat(可能),但是一旦你用它命名,gcc就会将它们编译/修改为C ++。

这是C ++的一大优势,早在今天。有效的C是有效的C ++(主要是),所以转移到新语言是微不足道的。

答案 2 :(得分:1)

像往常一样,你没有给我们足够的信息,但如果你问的是微软和/或GCC编译器,他们会在没有明确信息的情况下,根据他们在扩展名上编译文件的方式。如果将.cpp文件重命名为.c,它将被编译为C源代码而不是C ++(反之亦然),但这绝不意味着该文件将编译而不会出错。

答案 3 :(得分:0)

它们可能编译也可能不编译为C ++文件。语言很接近,但不一样。例如,在C中,变量可以命名为“new”,但在C ++中是一个关键字,所以

int new = 12;

将在C中编译,但不在C ++中编译。 “class”,“public”,...等C ++关键字相同。

总体目标是使其编译或编译失败,但永远不会编译错误。虽然我不确定他们是否100%成功。