艺术的追求从编程开始

C/C++/UNIX/PYTHON/ALGORITHM

导航

C and C++ 如何嵌套使用

1. 要知道extern "C"的含义:

(1)  extern是C/C++中表明函数和全局变量作用范围的关键字, 该关键字表明其申明的函数和变量可以在本模块或者其他模块中使用。

(2)  “C” 

    为了使的C/C++遵守同一个编译和链接的约定。

    例如:指定strcpy()根据c的编译和链接方法,extern "C" char* strcpy(char *, const char*);

(3) extern 是一个申明,而不是定义一个变量

 extern “C”表示按照c的方式进行编译和链接;

 

2. c++的编译和链接方法:

(1)c++的重载: 例如void print(int i);   void print(char c); 被编译为,_print_int(int i), _print_char(char c )

         所以在调用print(3)时实际上会查找_print_int(3)函数来执行

(2)c中没有重载的,所以只会将print函数编译成_print()

这就是为什么要在c++中用extern “C” 来调用外部的c函数

 

3. c和c++互相调用的实例:

(1)c++中调用c

    a。 在c中要加上extern的关键字:

//cheader.h
extern
void print(int i);
//cheader.c

#include "cheader.h"

void print(int i)
{
    printf("test");
}    

    b.在c++中要用extern "C"来引用c中的函数

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

int main(int argc, char *argv){
        print(3);
        return 0;   
}

(2)在c中调用c++代码

a。在 c++的头文件.h中定义

  extern "C" void print(int i);

    .cpp中

    #include "cpp.h"

    using namespace std;

    void print(int i)

    {...}

 

b. 在c中调用:

    extern void print(int i );

    int main(){print(3);}

 

 

总之是:在c++代码中用extern “C”  , 在c代码中extern

posted on 2014-08-07 07:09  Rambo.Wang  阅读(1123)  评论(0编辑  收藏  举报