C C 中extern C 的作用分析

2022-09-28 09:18:09 字數 1163 閱讀 5931

我們經常會在c/c++svjahslg程式中見到extern "c",這是乙個很重要的概念。本文就來以例項形式講述c/c++中extern "c"的作用。分享給大家供大家參考之用。具體分析如下:

作用:實現c和c++混合程式設計。

原理:c和c++編譯器編譯之後,函式名會編譯成不同的名字,鏈結階段名字查詢會找不到目標,後面例項中會詳解。

用法:①.c檔案中定義的函式,.cpp檔案要呼叫時,該.cpp檔案中要用extern "c"宣告該函式;

②.反過來,.cpp檔案中定義的函式,.c檔案要呼叫,則同樣要在.cpp檔案中用extern "c"宣告,.c檔案只用普通的extern宣告。

兩個原始檔分別編譯成.o檔案,再鏈結成執行檔案。鏈結.o檔案生成執行檔案時,必須得用g++。

例項:在原始檔中宣告的,沒有標頭檔案

.c檔案定義的函式,.cpp檔案呼叫:

//.c檔案定義的函式

extern int myadd(int a, int b);

int myadd(int a, int b)

//.cpp檔案呼叫

#include

using namespace std;

extern "c" int myadd(int a, int b);

int main()

.cpp檔案定義的函式,.c檔案呼叫:

//.cpp檔案定義的函式

extern "c" int程式設計客棧 myadd(int a, int b);

int myadd(int a, int b)

//.c程式設計客棧檔案呼叫

#include

extern i程式設計客棧nt myadd(int a, int b);

int main()

如果在標頭檔案中宣告,則.c檔案正常的包含該標頭檔案,.cpp檔案應該用

//.cpp檔案的包含方式

extern "c"

的方式來包含標頭檔案,該標頭檔案中宣告的函式都為c方式編譯。

原理補充:c檔案中,上述函式編譯之後的函式名為類似於_myadd的形式,而cpp的編譯之後函式名為類似於_myadd_int_int的形式,因為cpp要支援過載,用這種方式來區別過載的函式。

本文標題: c/c++中extern "c" 的作用分析

本文位址: /ruanjian/c/113279.html

QT C 中extern C 的作用

前些天,程式設計序是用到了很久以前寫的c程式,想把裡面的函式利用起來,連線發現出現了找不到具體函式的錯誤 以下是假設舊的c程式庫 c的標頭檔案 c.h ifndef c h define c h extern int add int x,int y endif c的原始檔 c.c int add i...

QT C 中extern C 的作用

前些天,程式設計序是用到了很久以前寫的c程式,想把裡面的函式利用起來,連線發現出現了找不到具體函式的錯誤 以下是假設舊的c程式庫 c的標頭檔案 cpp view plain copy c.h ifndef c h define c h extern intadd intx,inty endif c的...

extern「c」宣告的作用

extern c 簡介extern c 包含雙重含義,從字面上即可得到 首先,被它修飾的目標是 extern 的 其次,被它修飾的目標是 c 的。讓我們來詳細解讀這兩重含義。含義 1 被extern c 限定的函式或變數是extern型別的 extern是c c 語言中表明函式和全域性變數作用範圍 ...