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程序可不理解什么 类,析构函数等等,所以一般这个特性无用。