关于 C 和 C++ 编码标准的最佳实践是什么?是否应该允许开发人员随意将它们混合在一起。链接 C 和 C++ 目标文件时是否存在任何复杂问题。
传统上用 C 编写的套接字库之类的东西是否应该保留在 C 中并保存在单独的源文件中?那就是将 c 代码保存在 .c 文件中,将 c++ 代码保存在 .cpp 文件中。 在用 g++ 解析后混合使用 c 和 C++ 时,会不会有任何性能损失,因为类型安全检查不是在 C 中完成的?但在 C++ 中。将是链接 C 和 C++ 源代码文件的最佳方式。
最佳答案
最大的问题是从 C++ 代码调用 C 函数,反之亦然。在这种情况下,您要确保使用 extern "C"
将函数标记为具有“C”链接。您可以直接在头文件中执行此操作:
#if defined( __cplusplus )
extern "C" {
#endif
extern int myfunc( const char *param, int another_one );
#if defined( __cplusplus )
}
#endif
您需要 #if
,因为包含它的 C 代码无法理解 extern "C"
。
如果不想(或不能)更改头文件,可以在 C++ 代码中进行:
extern "C" {
#include "myfuncheader.h"
}
您可以用相同的方式将 C++ 函数标记为具有 C 链接,然后您可以从 C 代码调用它。您不能对重载函数或 C++ 类执行此操作。
除此之外,混合C和C++应该没有问题。我们的 C++ 代码仍在使用许多已有数十年历史的 C 函数。
关于c++ - C 和 C++ 编码标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/283701/