C和C++编码标准

jco*_*nja 8 c c++ standards

关于C和C++编码标准的最佳实践是什么?应该允许开发人员不知所措地将它们混合在一起.链接C和C++目标文件时是否存在任何复杂情况.

传统上用C语言编写的套接字库是否应保留在C中并保存在单独的源文件中?这是将.c文件和c ++代码中的c代码保存在.cpp文件中.在使用g ++解析后混合c和C++会有任何性能损失,因为类型安全检查不是在C中完成的吗?但是在C++中.这将是链接C和C++源代码文件的最佳方式.

Gra*_*row 7

最大的问题是从C++代码调用C函数,反之亦然.在这种情况下,您需要确保将该功能标记为使用"C"链接extern "C".您可以直接使用以下命令在头文件中执行此操作:

#if defined( __cplusplus )
extern "C" {
#endif

extern int myfunc( const char *param, int another_one );

#if defined( __cplusplus )
}
#endif
Run Code Online (Sandbox Code Playgroud)

你需要#ifs,因为包含它的C代码将无法理解extern "C".

如果您不想(或不能)更改头文件,可以在C++代码中执行此操作:

extern "C" {
#include "myfuncheader.h"
}
Run Code Online (Sandbox Code Playgroud)

您可以将C++函数标记为具有相同方式的C链接,然后可以从C代码中调用它.您不能为重载函数或C++类执行此操作.

除此之外,混合C和C++应该没有问题.我们有许多几十年前的C函数,我们的C++代码仍在使用它们.