国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C/C++中extern "C" 的作用分析

2020-01-26 15:20:53
字體:
來源:轉載
供稿:網友

我們經常會在C/C++程序中見到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){  return a+b;}
//.cpp文件調用#include <iostream>using namespace std;extern "C" int myadd(int a, int b);int main(){  cout << myadd(3, 7) << endl;  return 0;}

.cpp文件定義的函數,.c文件調用:

//.cpp文件定義的函數extern "C" int myadd(int a, int b);int myadd(int a, int b){  return a + b;}
//.c文件調用#include <stdio.h>extern int myadd(int a, int b);int main(){  printf("%d/n", myadd(3, 7));  return 0;}

如果在頭文件中聲明,則.c文件正常的包含該頭文件,.cpp文件應該用

//.cpp文件的包含方式extern "C"{  #include "myHead.h"}

的方式來包含頭文件,該頭文件中聲明的函數都為C方式編譯。

原理補充:C文件中,上述函數編譯之后的函數名為類似于_myadd的形式,而CPP的編譯之后函數名為類似于_myadd_int_int的形式,因為CPP要支持重載,用這種方式來區別重載的函數。

相信本文所述對大家的C++程序設計有一定的借鑒價值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新绛县| 蕲春县| 邓州市| 南木林县| 上虞市| 乌兰县| 临桂县| 广德县| 喀喇沁旗| 甘孜县| 道孚县| 泗水县| 龙南县| 池州市| 抚宁县| 顺义区| 双江| 措美县| 都安| 宜州市| 桃源县| 定兴县| 新竹市| 周口市| 磐安县| 莎车县| 闸北区| 临沂市| 塘沽区| 武乡县| 丹阳市| 颍上县| 鄂伦春自治旗| 吉安市| 临夏市| 呼图壁县| 大连市| 灵山县| 民县| 车致| 永安市|