您的当前位置:首页C和C++的区别与联系

C和C++的区别与联系

来源:小侦探旅游网

一.#if defined(__cplusplus) || defined(c_plusplus)宏命令的用法

示例:
代码开头:

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

代码结尾:

#if defined(__cplusplus) || defined(c_plusplus)
}
#endif

用法:
用于将C++代码以标准C形式输出(即以C的形式被调用)。这是因为C++虽然常被认为是C的超集,但是C++的编译器还是与C的编译器不同的。
说明:

其次,为什么需要使用extern"C"呢?C++之父在设计C++之时,考虑到当时已经存在了大量的C代码,为了支持原来的C代码和已经写好C库,需要在C++中尽可能的支持C,而extern"C"就是其中的一个策略。试想这样的情况:一个库文件已经用C写好了而且运行得很良好,这个时候我们需要使用这个库文件,但是我们需要使用C++来写这个新的代码。如果这个代码使用的是C++的方式链接这个C库文件的话,那么就会出现链接错误。之所以会出现链接过不去的错误,是因为链接器找不到函数。因此,为了在C++代码中调用用C写成的库文件,就需要用extern"C"来告诉编译器:这是一个用C写成的库文件,请用C的方式来链接它们。比如,现在我们有了一个C库文件,它的头文件是f.h,产生的lib文件是f.lib,那么我们如果要在C++中使用这个库文件,我们需要这样写:

extern "C" {
  #include "fun.h"
}

因篇幅问题不能全部显示,请点此查看更多更全内容