博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[原创] c/c++ 的 extern ""C"
阅读量:4674 次
发布时间:2019-06-09

本文共 1089 字,大约阅读时间需要 3 分钟。

  extern "C" 的主要作用是为了指示编译器按c语言编译, 从而能够正确调用c语言代码. 我将试着从c/c++用与不用extern "C"分别举例来说明我对此的用法, 如有疏漏错误, 还请评论指出.

  首先, 在C++文件中, 对于在头文件中的函数声明添加 extern "C", 这就表示该函数需要采用C编译, 可以编译通过, 但在module.cpp文件调用该函数时, 会因函数名不一致导致出错. 这种情况纯属画蛇添足.

1 // 模块A头文件 moduleA.h 2  3 #ifndef MODULE_A_H 4 #define MODULE_A_H 5   6 int foo(int x, int y); 7   8 #endif 9 在模块B中引用该函数:10 // 模块B实现文件 moduleB.cpp11 12 #include "moduleA.h"13  14 foo(2,3);

  通常情况下, extern "C"用于c++调用c库时, 在C++源文件中的头文件包含或函数接口声明.

extern "C"{#include "cExample.h"}或extern "C"{void func(void);}

  我们经常在cpp文件中见到下面这类代码就属于这种情况

#ifdef __cplusplusextern "C" {#endif//一段代码void func(void);#ifdef __cplusplus}#endif

 

  其次,由于c语言不支持extern "C"声明, 所以 *.c文件并不能使用extern "C". 而对于C语言引用c++的函数或变量的情况, 则需要先

在头文件中添加 extern "C"声明, 其次在调用该函数的c源文件中, 再次声明该函数, 默认为extern, 所以extern可不添加, 此时在c源文件中不能通过包含头文件的方式调用该函数.

 

  最后, extern "C"和extern完全不一样, 并不是说c语言不支持extern "C", 所以要在c源文件中以extern代替, extern也可以不写,, 详见我的另一篇文章http://www.cnblogs.com/wj742421292/p/8847368.html.

  

 

 

 

参考:

https://baike.baidu.com/item/extern%20%22C%22/15267013?fr=aladdin

转载于:https://www.cnblogs.com/wj742421292/p/8848006.html

你可能感兴趣的文章
Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句梳理
查看>>
UVa 10806 Dijkstra,Dijkstra(最小费用最大流)
查看>>
Java排序算法之直接选择排序
查看>>
《鸟哥的Linux私房菜 基础学习篇(第四版)》 第23章 XWindows设定介绍 笔记
查看>>
js同比例缩放图片
查看>>
本机不装Oracle,使用plsql连接远程Oracle的方法
查看>>
bzoj1562[NOI2009] 变换序列
查看>>
LODOP在页面不同位置输出页眉页脚
查看>>
Android Thread 官方说明
查看>>
瞎折腾-CentOS 7.4 编译4.16.2版kernel 并安装
查看>>
[转]如何才能在 IIS 7.5 使用 Windows PowerShell Snap-In 功能
查看>>
Selenium 调用IEDriverServer打开IE浏览器
查看>>
Nginx 访问日志配置
查看>>
python中while与else的联姻
查看>>
AtCoder 杂题训练
查看>>
javascript 200列(3)
查看>>
随手练——打印折痕方向
查看>>
IE浏览器上传文件时本地路径变成”C:\fakepath\”的问题
查看>>
安装php扩展后,执行时找不到扩展 class xxx no found
查看>>
Configuring IPMI under Linux using ipmitool
查看>>