`
carolaif
  • 浏览: 71034 次
  • 性别: Icon_minigender_2
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

C语言外部变量的使用以及extern的用法

阅读更多

http://hi.baidu.com/%C3%E2%B7%D1%B4%F3%BB%B0%D0%F2%C1%D0%BA%C5/blog/item/e3b2e4cb4f2be1f453664f06.html

 

 

对外部变量的说明和定义不是一回事.对外部变量的说明,只是声明该变量是在外部定义过的一个全局变量..在这里引用.而对外部变量的定义,则是要分配存储单元.一个全局变量只能定义一次,却可以多次引用.

用extern声明外部变量,目的是可以在其它的文件中调用.具体使用见下面的例子:

    file1.c                                                       file2.c

    int i,j;//定义全局变量                                extern   int i,j;//外部变量说明

    char c;                                                extern char c;

    void func()                                           void func1()

    {                                                        {

    }                                                         }

在file2.c中对外部变量i,j,c进行了说明,就可以直接调用file1.c中定义的全局变量了

 

静态变量static的使用

有时在中断程序中定义了变量,不希望每次进入中断程序,变量就被赋初值.这时就要使用static变量.静态局部变量在编译时赋初值,既只赋初值一次.见下例:

void serial_interrupt() interrupt 4 using 3

{ static uchar i="0";

   i++;

}

上例中,编译时,i被赋初值0,以后每进入一次中断,i+1,而不是每次进入中断,i都被请零,再加1

如果在a.c中要调用在b.c中定义的函数func(),需要在a.c中声明该函数,表示该函数在别的源文件中定义。函数是可以互相调用的,因此函数都具有外部存储种类的属性。原则上调用一个在在本程序模块文件以外的其他模块文件所定义的函数,必须用关键字extern说明被调用函数是一个外部函数。实际使用中可以省掉extern。即下面两个函数声明没有明显的区别:

extern int f();和int f();

分享到:
评论

相关推荐

    C语言基础知识点解析(extern,static,typedef,const)

    一、extern的使用方法 下面是《C语言程序设计》中的关于extern的解释: 在一个源程序的所有源文件中,一个外部变量只能在某个文件中定义一次,而其他文件可以通过extern声明来访问它(定义外部变量的源文件中也可以...

    c中static用法

    外部变量定义在函数之外,因此可以在许多函数中使用。由于C语言不允许在一个函数 中定义其它函数,因此函数本身只能是“外部的”。 由于C语言代码是以文件为单位来组织的,在一个源程序所有源文件中,一个外部变量或...

    extern用法详解

    extern关键字是C语言中用来声明外部变量或函数的关键字。它可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 1. extern变量 在一个源文件里...

    C语言程序设计标准教程

    在{}中的函数体内, 除形参外没有使用其它变量,因此只有语句而没有变量类型说明。 上边这种定义方法称为“传统格式”。 这种格式不易于编译系统检查,从而会引起一些非常细微而且难于跟踪的错误。ANSI C 的新标准中...

    extern_volatile等修饰符的用法

    1. 声明外部变量 extern可以声明其他文件内定义的变量,变量名在其他文件中可见。 2. 指定语言链接 extern可以指定使用另一语言链接,需要与特定的转换符一起使用,例如`extern "C"`。 四、volatile修饰符 ...

    c语言入门教程.txt

    此外还可以分为静态变量、外部变量、寄存器变量和自动存储变量。这些数据类型我们在本节和后面的章节中都会陆陆续续介绍。 那么变量我们总要给它取个名字吧,这个名字我们叫做标识符。 标识符的命名有一定的规则: ...

    谭浩强c语言程序设计

    用extern声明外部变量 123 9 预处理命令 9.1 概述 124 9.2 宏定义 125 9.2.1 无参宏定义 126 9.2.2 带参宏定义 127 9.3 文件包含 128 9.4 条件编译 130 9.5 本章小结 10 指针 10.1 地址指针的基本概念 131 10.2 变量...

    谭浩强 入门c语言教程

    1 C语言概述 2 1.1 C语言的发展过程 2 1.2 当代最优秀的程序设计语言 2 1.3 C语言版本 2 1.4 C语言的特点 3 1.5 面向对象的程序设计语言 3 1.6 C和C++ 3 1.7 简单的C程序介绍 ...8.9.5 用extern声明外部变量 23

    C语言解析教程(原书第4版)(美) 凯利.pdf

    5.12 静态外部变量 5.13 默认初始化 5.14 递归 5.15 例子:汉诺塔 5.16 总结 5.17 练习 第6章 数组、指针和字符串 6.1 一维数组 6.1.1 初始化 6.1.2 下标 6.2 指针 6.3 传引用调用 6.4 数组和指针之间的关系 6.5 ...

    谭浩强版c语言程序设计

    用extern声明外部变量 123 9 预处理命令 9.1 概述 124 9.2 宏定义 125 9.2.1 无参宏定义 126 9.2.2 带参宏定义 127 9.3 文件包含 128 9.4 条件编译 130 9.5 本章小结 10 指针 10.1 地址指针的基本概念 131 10.2 变量...

    谭浩强 C语言程序设计 教程全书 Word版

    8.9.5 用extern声明外部变量 23 9 预处理命令 1 9.1 概述 1 9.2 宏定义 1 9.2.1 无参宏定义 1 9.2.2 带参宏定义 4 9.3 文件包含 8 9.4 条件编译 9 9.5 本章小结 11 10 指针 1 10.1 地址指针的基本概念 1 10.2 变量的...

    《C语言程序设计》谭浩强

    用extern声明外部变量 123 9 预处理命令 9.1 概述 124 9.2 宏定义 125 9.2.1 无参宏定义 126 9.2.2 带参宏定义 127 9.3 文件包含 128 9.4 条件编译 130 9.5 本章小结 10 指针 10.1 地址指针的基本概念 131 10.2 变量...

    C语言命语法错误大全

    解决方法是检查变量'x'是否已经使用,确保变量'x'已经初始化。 22. warning C4013: 'fi' undefined; assuming extern returning int 该警告是由于函数'fi'未定义,假设其是外部函数,返回值类型是int引起的。解决...

    c语言(编写程序最佳参考资料)

    8.9.5 用extern声明外部变量... 23 9 预处理命令... 1 9.1 概述... 1 9.2 宏定义... 1 9.2.1 无参宏定义... 1 9.2.2 带参宏定义... 4 9.3 文件包含... 8 9.4 条件编译... 9 9.5 本章小结... 11 10 指针 ...

    c语言程序设计(第三版)

    8.9.5 用extern声明外部变量 23 9 预处理命令 1 9.1 概述 1 9.2 宏定义 1 9.2.1 无参宏定义 1 9.2.2 带参宏定义 4 9.3 文件包含 8 9.4 条件编译 9 9.5 本章小结 11 10 指针 1 10.1 地址指针的基本概念 1 10.2 变量...

    谭浩强c语言word版

    用extern声明外部变量 123 9 预处理命令 9.1 概述 124 9.2 宏定义 125 9.2.1 无参宏定义 126 9.2.2 带参宏定义 127 9.3 文件包含 128 9.4 条件编译 130 9.5 本章小结 10 指针 10.1 地址指针的基本概念 131 10.2 变量...

    谭浩强C语言教程Word版

    19 8.9 变量的存储类别 20 8.9.1 动态存储方式与静态动态存储方式 20 8.9.2 auto变量 21 8.9.3 用static声明局部变量 21 8.9.4 register变量 22 8.9.5 用extern声明外部变量 23 <br/>9 ...

    新概念C语言.李一波(带详细书签).pdf

    18.3.5 用extern声明外部变量 196 18.3.6 用static声明外部变量 198 18.3.7 关于变量的声明和定义 198 18.3.8 存储类别小结 199 18.4 编译预处理 201 18.4.1 宏替换 201 18.4.2 文件包括 204 18.4.3 条件...

    《你必须知道的495个C语言问题》

    《你必须知道的495个C语言问题》以问答的形式组织内容,讨论了学习或使用C语言的过程中经常遇到的一些问题。书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预...

    FFT的C语言版,c语言实现fft,C,C++

    7128点 :3.09864ms使用方法指导:1,需要两个文件,fft_fp.c和fft_fp.h2,根据需求修改fft_fp.h中的采样点数FFT_N,采样点数以宏定义的方式定义3,外部声明两个全局变量,已经在fft_fp.c中定义extern struct compx ...

Global site tag (gtag.js) - Google Analytics