简单理解extern "C"

原创 2013年12月05日 01:34:19

    首先明确一点就是以.c为扩展名的源文件a.c(a代表文件名),vs按照C的编译方式进行编译;以.cpp为后缀的源文件a.cpp,按照C++的编译方式进行编译,而C++是面向对象的,支持函数重载,所以编译器对函数的处理和C有所不同。这个时候如果在另外一个源文件b.cpp中包含a.h时就会出现”无法解析的外部符号错误“,原因就是在b.cpp中a.h中的函数按照C++编译方式进行处理,在a.c中函数按照C的方式进行处理,所以找不到对应函数的定义(编译器处理后的函数名不同)。这时就需要extern ”C"对a.h进行包含,告诉编译器a.h中的函数按照C方式进行编译。

//a.h
void TestExternC();
//a.c
#include "a.h"
#include <stdio.h>
void TestExternC()
{
    printf("test\n");
}
//b.cpp
extern "C"
{
    #include "a.h"
}
int main()
{
    TestExternC();
    return 0;
}


深入理解C/C++混合编程(关于#ifdef __cplusplus extern "C" {...}的用法)

本篇文章是对C/C++混合编程进行了详细的分析介绍,需要的朋友参考下。         在工作中,C、C++密不可分,做我们嵌入式方面的,当然更多的是C,但,有时候却少不了C++,而且是C、C++混搭...
  • zzwdkxx
  • zzwdkxx
  • 2015年03月13日 18:20
  • 4119

extern C作用总结

extern C使用主要用与在C++代码中调用的C函数的声明,或C++中编译的函数要在C中调用,也即是导入C形式的函数库或者提供C类型的库给C调用,...
  • wangjiaoyu250
  • wangjiaoyu250
  • 2015年01月17日 19:48
  • 1357

C和C++混合编译,extern"C"的用法

第一篇:转载于C和C++混合编译关于extern_C 通常,在C语言的头文件中经常可以看到类似下面这种形式的代码#ifdef __cplusplus extern "C" { #endif...
  • MonroeD
  • MonroeD
  • 2017年02月05日 14:22
  • 1629

c++中的extern “C”

比如说你用C 开发了一个DLL 库,为了能够让C ++语言也能够调用你的DLL 输出(Export) 的函数,你需要用extern "C" 来强制编译器不要修改你的函数名。 通常,在C 语言的头文...
  • gongmin856
  • gongmin856
  • 2015年03月12日 22:08
  • 755

C语言正确使用extern关键字

转载请注明出处利用关键字extern,可以在一个文件中引用另一个文件中定义的变量或者函数,下面就结合具体的实例,分类说明一下。 一、引用同一个文件中的变量#includeint func();int...
  • xingjiarong
  • xingjiarong
  • 2015年08月14日 08:37
  • 25384

关于extern ”C“以及vs2008里的实例

1.首先介绍一下vs2008对C和C++文件的分别编译 在一个工程下分别编译C和C++文件并链接之...
  • j2370530
  • j2370530
  • 2014年04月07日 22:16
  • 1014

C语言之extern作用于指针、数组

以下为测试环境: gcc 4.3.2-1-1 GNU/Linux Debian 5.0 (刚开始使用csdn博客,没经验。由于中间调试时间较长,忘了备份,刚写完,赶紧发了。一看,没有;再看,还是...
  • hilyoo
  • hilyoo
  • 2009年08月08日 13:54
  • 4207

vc++中 extern "C" 详解

vc++中 extern "C" 详解   1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接...
  • zhihu008
  • zhihu008
  • 2012年05月23日 23:05
  • 6799

extern ”C"的使用

本文分析extern “C”的使用方法;介绍C++和C文件相互调用的方式。 extern "C"           extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“ex...
  • u013074465
  • u013074465
  • 2015年01月15日 11:10
  • 5205

gcc和g++的区别__C++中的extern C""

********************************************************************** ****************************...
  • e3399
  • e3399
  • 2012年05月27日 22:55
  • 2682
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单理解extern "C"
举报原因:
原因补充:

(最多只允许输入30个字)