extern怎么用?

伴随着不同源文件变量和函数之间的相互引用以及相互独立的关系,产生了extern和static关键字。static的用法可以查看:static有几种用法?

这节讲的是extern关键字的用法。

extern关键字可以用来声明变量和函数作为外部变量或者函数供其它文件使用。

extern声明变量

示例程序:

test.h如下:

//声明
extern int a;
extern int b;

test.c如下:

#include "test.h"

//定义
int a = 520;
int b = 1314;

主函数所在的源文件为main.c,其代码如下:

#include <stdio.h>
#include "test.h"

int main(void)
{
 printf("a = %d , b = %d\n", a, b);
 
 return 0;
}

其中,a,b的声明也可放在main.c中,代码如下:

#include <stdio.h>

extern int a;
extern int b;

int main(void)
{
 printf("a = %d , b = %d\n", a, b);
 
 return 0;
}

此时,就不需要不需要包含test.h这个头文件了。

extern声明函数

示例程序:

test.h如下:

//声明变量
extern int a;
extern int b;

//函数声明
extern int add(int a, int b);  //extern关键字可要可不要

test.c如下:

#include "test.h"

//定义
int a = 520;
int b = 1314;

int add(int a, int b)
{
 return a + b;
}

main.c如下:

#include <stdio.h>
#include "test.h"

int main(void)
{
 printf("a = %d , b = %d\n", a, b);
 printf("add(a, b) = %d\n", add(a, b));
 return 0;
}

同上,函数的声明也可以放在其被调用的源文件中,即:

#include <stdio.h>

//声明变量
extern int a;
extern int b;

//函数声明
extern int add(int a, int b);  //extern关键字可要可不要

int main(void)
{
 printf("a = %d , b = %d\n", a, b);
 printf("add(a, b) = %d\n", add(a, b));
 return 0;
}

程序运行结果为:

extern “C”

extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。

因为在C++出现以前,很多代码都是C语言写的,而且很底层的库也是C语言写的,为了更好的支持原来的C代码和已经写好的C语言库,需要在C++中尽可能的支持C,而extern "C"就是其中的一个策略。

示例代码:

#ifndef __TEST_H   /*防止该头文件被重复引用*/
#define __TEST_H

#ifdef __cplusplus            
extern "C"{

#endif

/*…*/

#ifdef __cplusplus
}
#endif

#endif /*end of __TEST_H*/

__cplusplus为C++定义的一个宏,此时extern “C”后的部分的代码按C语言的格式进行编译,而不是C++。

以上是extern关键字的三种用法。希望对大家有帮助!

历史文章精选:

01 二维数组作为函数参数

02 小学生都在使用手机学习编程了,你还在吃鸡打王者?

03 别用Visua C++6.0来开发C程序了,用……

04 使用Notepad++来开发C程序

05 关于main()

06 一份通俗易懂的C语言内存总结

07 数组问题:a与&a有什么不同

08 C语言函数参数压栈的顺序是?

09 getchar()、getche()、getch()的区别?

10 【校招编程01】级数求和

11 【校招编程02】优雅的点

12 【校招编程03】整数翻转

13 【校招编程04】懂二进制

14 【校招编程05】找符合条件的数

15 程序员的桌面,好酷!!!

16 static有几种用法?

每日一句

人生不过如此,且行且珍惜。自己永远是自己的主角,不要总在别人的戏剧里充当配角!

我是肥胖的正念君

觉得正念君很胖的话

就来给我点个赞吧

↓     ↓     ↓     ↓     ↓     ↓

(0)

相关推荐

  • C语言学习篇(15)-----函数传参详解

    https://m.toutiao.com/is/JpuAcLb/ 前面我们已经介绍过什么是指针,指针变量的用法等等,今天我们就来讲讲什么是函数,函数有啥作用,函数的参数有哪些需要注意的地方以及指针与 ...

  • extern “C”的作用详解

    extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码.加上extern "C"后,会指示编译器这部分代码按C语言(而不是C++)的方式 ...

  • 结构体的声明(extern)与调用的方式

    要求如下,在.h文件中这样定义: typedef struct typFNT_GB16                 // 汉字字模数据结构 {        signed char Index[2 ...

  • 深度阅读:详细剖析extern''C''

    https://m.toutiao.com/is/eYruGqo/ [导读]:本文详细解析extern 'C'的底层原理与实际应用. 以下是正文 在你工作过的系统里,不知能否看到类似下面的代码. 这好 ...

  • 你真的知道C语言里extern“C”的作用吗?

    大家好,我是小麦,今天是周末,但是也不能停下学习的脚步. 我经常在C语言的头文件中看到下面的代码: #ifdef __cplusplus extern 'C' { #endif // all of y ...

  • C语言 extern “C” - C语言零基础入门教程

    C语言 extern "C" - C语言零基础入门教程 目录 一.extern "C" 简介 二.extern "C" 实战 1.头文件使用 ...

  • 编程语言C语言 extern - C语言零基础入门教程

    编程语言C语言 extern - C语言零基础入门教程 目录 一.简介 二.extern 修饰变量 1.在单文件中使用 extern 2.在多文件中使用 extern 三.extern 修饰函数 四. ...