0

我有一个小小的疑问。

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

是否有必要使这些额外的函数成为类的一部分,还是 C++ 类函数可以调用 C 函数?

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

谢谢!

4

3 回答 3

1

你不需要把它们放在一个类中。函数存在于 C++ 中,就像在 C 中一样,因此您可以直接使用它们。只需尝试一下,然后再询问是否有问题。当您声明向 C++ 项目添加函数时,只需将所有代码视为 C++。使用与项目其余部分相同的文件扩展名将新内容放入文件中。

编辑以回应OP的评论:

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

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

现在,如果在您的情况下,拥有独立功能而不是添加到类(修改或使用继承)是一个很好的设计,那么很难根据您发布的信息来判断。但是,如果您需要做的事情可以在不访问现有类的私有部分的情况下以自然的方式完成,那么答案很可能是肯定的。

于 2012-08-02T15:04:44.217 回答
1

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

mycfunc.h:

void test(int x);

myfunc.c:

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

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

于 2012-08-02T15:01:24.957 回答
1

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

因此,您可以使用 C 中的命令式形式(即使它是模块化的或不是模块化的)。

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

于 2012-08-02T15:14:31.363 回答