如何理解c语言中extern "C"的作用

 时间:2026-02-13 15:18:25

1、c语言代码和c++语言编写的代码之间可以相互调用,而extern "C"的用法就在于使c++代码中能访问c语言代码。这就是它的根本作用。

为了后面讲解,我们定义了c++的main函数,并且调用一个Add方法。

如何理解c语言中extern

如何理解c语言中extern

如何理解c语言中extern

2、如果都使用g++编译器,程序编译是没问题的。当我们使用gcc编译Add方法后,在用g++编译整个程序,发现编译报错,找不到Add方法。

如何理解c语言中extern

3、为什么编译c++程序,并使用gcc编译后的c语言目标文件,会报错找不到对应的方法呢?

我们分别用gcc和g++编译add文件,并通过strings查看add方法,发现add方法符号并不相同。如下图所示。

如何理解c语言中extern

4、因为在c++中函数可以重载,所以不能完全通过函数名找到对应的函数。所以,在编译main函数时,报错找不到对应的add方法。

这时就需要使用extern "C"声明c语言函数。

第一种方式:直接在cpp文件中,引用c语言头文件时加上extern "C"声明,如下所示:

如何理解c语言中extern

5、第二种方式,在编写c语言代码时,我们主动提供extern "C"声明,表明我们代码可支持c++语言调用。

如何理解c语言中extern

6、在c语言中添加extern "C"声明时,我们需要加上宏定义_cplusplus的判断。这个宏的作用时,如果使用gcc编译器编译代码则忽略该定义;如果使用g++编译器编译则包含extern "C"声明。

我们看下如果不添加该宏定义时,使用gcc编译将报错,如下图所示:

如何理解c语言中extern

  • 什么是力的作用效果
  • 疯狂的科学狂人 LOL炸弹人中单攻略
  • 手机QQ关闭“新消息通知”的操作方法
  • 黑莓小说怎么查看小说目录
  • 女方结婚房间怎么布置
  • 热门搜索
    淮安旅游网 三亚旅游团购 杭州旅游景点排行 广东旅游景点推荐 南昌梅岭旅游攻略 南华寺旅游攻略 三三旅游 奖励旅游策划方案 布里斯班旅游 宜春旅游景点大全