关于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/