一、extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用;仅仅是一个声明,其并不是在定义。
三、c++中引用c:
C++调用C代码关键是需要告诉C++编译器那些代码是用C语言实现的:
方法一:
1、C++头文件:
/* c++Example.h */
extern "C"
{
#include "cExample.h"
}
2、C语言的头文件:
/* cExample.h */
#ifndef C_EXAMPLE_H
#define C_EXAMPLE_H
extern int add(int x,int y);
#endif
3、C语言的实现文件:
/* cExample.c */
#include "cExample.h"
int add( int x, int y )
{
return x + y;
}
4、C++的实现文件:
/* cppExample.cpp */
int main(int argc, char* argv[])
{
add(2,3);
return 0;
}
方法二:
1、C++头文件:
/* c++Example.h */
2、C语言的头文件:
/* cExample.h */
#ifndef C_EXAMPLE_H
#define C_EXAMPLE_H
extern ”C“ int add(int x,int y);
#endif
3、C语言的实现文件:
/* cExample.c */
#include "cExample.h"
int add( int x, int y )
{
return x + y;
}
4、C++的实现文件:
/* cppExample.cpp */
int main(int argc, char* argv[])
{
add(2,3);
return 0;
}
四:c中引用c++:
1、C++的头文件:
/* cppExample.h */
#ifndef CPP_EXAMPLE_H
#define CPP_EXAMPLE_H
extern "C" int add( int x, int y );
#endif
2、C++的实现文件:
/* cppExample.cpp */
#include "cppExample.h"
int add( int x, int y )
{
return x + y;
}
3、C语言的实现文件:
/* C实现文件cExample.c */
/* 这样会编译出错:#include "cppExample.h" ,所以不需要#include "cppExample.h" */
extern int add( int x, int y );
int main( int argc, char* argv[] )
{
add( 2, 3 );
return 0;
}