关于C和C++编码标准的最佳实践是什么?应该允许开发人员不知所措地将它们混合在一起.链接C和C++目标文件时是否存在任何复杂情况.
传统上用C语言编写的套接字库是否应保留在C中并保存在单独的源文件中?这是将.c文件和c ++代码中的c代码保存在.cpp文件中.在使用g ++解析后混合c和C++会有任何性能损失,因为类型安全检查不是在C中完成的吗?但是在C++中.这将是链接C和C++源代码文件的最佳方式.
最大的问题是从C++代码调用C函数,反之亦然.在这种情况下,您需要确保将该功能标记为使用"C"链接extern "C"
.您可以直接使用以下命令在头文件中执行此操作:
#if defined( __cplusplus ) extern "C" { #endif extern int myfunc( const char *param, int another_one ); #if defined( __cplusplus ) } #endif
你需要#if
s,因为包含它的C代码将无法理解extern "C"
.
如果您不想(或不能)更改头文件,可以在C++代码中执行此操作:
extern "C" { #include "myfuncheader.h" }
您可以将C++函数标记为具有相同方式的C链接,然后可以从C代码中调用它.您不能为重载函数或C++类执行此操作.
除此之外,混合C和C++应该没有问题.我们有许多几十年前的C函数,我们的C++代码仍在使用它们.