首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C中引用C++语言中的函数,这个咋回事

2012-03-08 
C中引用C++语言中的函数,这个怎么回事?在C中引用C++语言中的函数和变量时,C++的头文件需添加externC ,但

C中引用C++语言中的函数,这个怎么回事?
在C中引用C++语言中的函数和变量时,C++的头文件需添加extern   "C ",但是在C语言中不能直接引用声明了extern   "C "的该头文件,应该仅将C文件中将C++中定义的extern   "C "函数声明为extern类型。

笔者编写的C引用C++函数例子工程中包含的三个文件的源代码如下:

//C++头文件   cppExample.h

#ifndef   CPP_EXAMPLE_H

#define   CPP_EXAMPLE_H

extern   "C "   int   add(   int   x,   int   y   );

#endif

//C++实现文件   cppExample.cpp

#i   nclude   "cppExample.h "

int   add(   int   x,   int   y   )

{

              return   x   +   y;

}

/*   C实现文件   cFile.c

/*   这样会编译出错:#i   nclude   "cExample.h "   */

extern   int   add(   int   x,   int   y   );

int   main(   int   argc,   char*   argv[]   )

{

              add(   2,   3   );        

              return   0;

}

在cFile.c中不包含头文件,编译时找不到add的定义啊?

应该仅将C文件中将C++中定义的extern   "C "函数声明为extern类型,这句话没理解,请问怎么解?

[解决办法]
//C++头文件 cppExample.h

#ifndef CPP_EXAMPLE_H
#define CPP_EXAMPLE_H

#ifdef __cplusplus
extern "C " {
#endif

int add( int x, int y );

#ifdef __cplusplus
}
#endif

#endif

//C++实现文件 cppExample.cpp
#include "cppExample.h "

int add(int x, int y )
{
return x + y;
}

/* C实现文件 cFile.c
#include "cppExample.h "

int main( int argc, char* argv[] )
{
add( 2, 3 );
return 0;
}

热点排行