c++primer学习笔记--extern 链接指示

extern的使用

我们自己编写了一个头文件, 是属于c的, 因为c++编写的程序比较慢。

#ifndef my_c_language//头文件保护符
#define my_c_language

#include <stdio.h>
using namespace std;

void fuck()
{
        printf("This is only have 'c' language!!!");
}


#endif

我们想要在 c++ 程序中使用 c程序

#include <iostream>
using namespace std;

extern "C" //按照c语言的方式 编译和链接  (注意 C 要大写哈)
{
        #include "my_c_language.h"
}

int  main()
{
        fuck();
}

这个时候,便会用 c 的编译链接去 编译程序,然后一起贴在一起。 如果不用 extern c, 而直接编译,则会用 c++的方式去编译

如果函数为这样

extern "C" void (*pf)(  void(*)(int)  )

即,需要传入一个int类型的指针, 那么这个 参数也必须是 c指针,或者 c函数的地址。

指向 extren “C”函数的值指针

extern "C" void (*pf)(void);

函数指针指向 c 函数, 传入一个void,返回一个void。 

由于链接指示不同,  pf 指针不年能再指向 c++ 函数。

extern与函数重载

extern "C"    fuck();
extern "C"    fuck(char who);

这样是不行的,c不支持重载, 不过在支持 函数重载的语言中是可行的。

导出c++函数到其他函数

extern "C" fuck(){ //按照c++程序来写}

则此程序可以被 c 函数调用。 不过值的注意的是, c程序可不理解什么 类,析构函数等等,所以一般这个特性无用。

猜你喜欢

转载自blog.csdn.net/pursue_my_life/article/details/80469086
今日推荐