extern(c語言關鍵字):它告訴編譯器,其使用的變量或者函數已經在其餘模塊定義了。(c語言的模塊一般指文件範圍)c++
舉個例子:編程
a.c文件函數
int j;編譯器
那麼在b.c裏面能夠編譯
extern int j;來使用a.c裏面的int j。變量
固然能夠在在a.c裏面定義static int j。經過添加static來限定int 只能在當前文件使用。gc
extern "c"(c++的關鍵字):主要用於c和c++的混合編程。他告訴編譯器,被它包含的代碼以c語言的方式編譯和鏈接(c語言和c++對函數的編譯會生成不一樣格式的名字)。使用例子以下static
c++使用c代碼:語言
/* c語言頭文件:cExample.h */
#ifndef C_EXAMPLE_H
#define C_EXAMPLE_H
int add(int x, inty);
#endifdi
/* c語言實現文件:cExample.c */
#include "cExample.h"
int add( int x, int y )
{
return x + y;
}
// c++實現文件,調用add:cppFile.cpp
extern"C" //以c語言的方式編譯和鏈接包含的代碼
{
#include"cExample.h"
}
int main(int argc, char* argv[])
{
add(2,3);
return0;
}
c使用c++代碼:
//C++頭文件cppExample.h
#ifndef CPP_EXAMPLE_H
#define CPP_EXAMPLE_H
extern "C" int add(int x, int y);//以c語言的方式編譯和鏈接
#endif
//C++實現文件 cppExample.cpp
#include "cppExample.h"
int add(int x, int y)
{
return x + y;
}
/* C實現文件 cFile.c extern int add(int x, int y);//使用外部函數 int main(int argc, char* argv[]) { add(2, 3); return0; }