类函数[C ++]不属于任何类的调用函数

时间:2012-08-02 14:58:07

标签: c++ makefile

我有一点怀疑。

我在C ++代码中添加了一些额外的函数,这些函数被类的函数调用。

是否有必要将这些额外函数作为类的一部分,或者C ++类函数是否可以调用C函数?

如果是,应该如何修改makefile?

谢谢!

3 个答案:

答案 0 :(得分:1)

只要你已经包含了一些声明并且C函数在编译中的某些点被链接,你就可以在任何C ++函数中调用C函数。例如:

mycfunc.h:

void test(int x);

myfunc.c:

void test(int x) {
  printf("%d\n", x);
}

现在,只需将头文件包含在要使用该功能的位置即可。在Makefile中,只需确保在最终编译中包含“myfunc.c”(或.o,如果你正在编译对象)。

答案 1 :(得分:1)

您不需要将它们放在课堂上。函数存在于C ++中,就像在C中一样,因此您可以使用它们。试试看,如果遇到麻烦再问一次。 当您声明向C ++项目添加函数时,只需将所有代码视为(并将其视为)C ++。使用与项目其余部分相同的文件扩展名将新内容放入文件中。

根据OP的评论进行编辑:

是的,在这种情况下,无需考虑C和C ++之间的区别。只需编写.cpp文件。在makefile中,只需添加这些文件就像其他文件一样。

如果你有现有的C ++代码并且需要在C中使用if,或者例如你有现有的C库并且需要从C ++调用它,那么C和C ++之间的区别很重要。在你的情况下,很可能没有理由不坚持使用C ++。与Java不同,拥有独立功能是完全自然的。在C ++标准库中甚至有很多。

现在,如果你的情况是好的设计有自由站立的功能而不是添加到类(修改或使用继承),很难说你给出的信息。但是,如果您需要做的事情可以以自然的方式完成而无需访问现有类的私有部分,那么答案很可能是肯定的。

答案 2 :(得分:1)

C ++不是纯粹的面向对象语言。

所以你可以在C中使用命令式表格(即使它是模块化的或不是模块化的)。

可以使用c * includes(例如ctime)访问未封装在Objects中的某些C函数。