当前位置:  编程技术>c/c++/嵌入式

c语言中static和extern的用法详细解析

    来源: 互联网  发布时间:2014-10-20

    本文导语:  一,static和extern:大工程下我们会碰到很多源文档。文档a.c 代码如下:static int i; //只在a文档中用int j;    //在工程里用static void init()         //只在a文档中用{}void callme()          //在工程中用{   static int sum;}上面的全...

一,static和extern:
大工程下我们会碰到很多源文档。

文档a.c

代码如下:

static int i; //只在a文档中用
int j;    //在工程里用
static void init()         //只在a文档中用
{
}
void callme()          //在工程中用
{
   static int sum;
}

上面的全局i变量和init()函数只能用在a.c文档中,全局变量sum的作用域只在callme里。变量j和函数callme()的全局限扩充到整个工程文档。所以能够在下面的b.c中用extern关键字调用。extern告诉编译器这个变量或函数在其他文档里已被定义了。

文档b.c

代码如下:

extern int j;     //调用a文档里的
extern void callme();  //调用a文档里的
int main()
{
  ...
}

extern的另外用法是当C和C++混合编程时假如c++调用的是c源文档定义的函数或变量,那么要加extern来告诉编译器用c方式命名函数:
文档A.cpp调用a.c里面的变量i和函数callme()
代码如下:

extern "C"  //在c++文档里调用c文档中的变量
{
   int j;
   void callme();
}
int main()
{
   callme();
}

二,static法则:
A、若全局变量仅在单个C文档中访问,则能够将这个变量修改为静态全局变量,以降低模块间的耦合度;

B、若全局变量仅由单个函数访问,则能够将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;

C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;


    
 
 

您可能感兴趣的文章:

  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • 关于C语言中的一些用法,高手进
  • HTML 脚本语言介绍及<script>标签用法
  • C语言变量类型与输出控制用法实例教程
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • C语言中char*和char[]用法区别分析
  • C语言中qsort函数用法实例小结
  • C语言入门之指针用法教程
  • 浅析C语言中assert的用法
  • C语言中字符串常用函数strcat与strcpy的用法介绍
  • C语言循环结构与时间函数用法实例教程
  • C语言中system()函数的用法总结
  • 浅析C语言中printf(),sprintf(),scanf(),sscanf()的用法和区别
  • c语言中static的用法详细示例分析
  • C语言、C++中的union用法总结
  • 浅析C语言中sscanf 的用法
  • C语言中const,volatile,restrict的用法总结
  • 基于c语言中调试工具的用法汇总(不包含gdb)
  • C语言二维条形码解析库 libqrencode
  • C语言的XML解析器 iksemel
  • 用C语言如何组装和解析XML报文???
  • 如何在VIM中使汇编语言和C语言自动缩进? iis7站长之家
  • 表达式语言解析器 Commons EL
  • C语言的异步DNS解析库 c-ares
  • C语言DNS解析器 dns.c
  • C语言的HTML解析库 libhtml
  • 请问脚本语言 解析器的工作原理?
  • 在做FTP服务端,请问哪位有解析LIST命令的C语言代码?
  • 纯C语言实现的HTML5解析库 Gumbo
  • C语言解析XML报文的问题
  • 深入解析C语言中常数的数据类型
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 深入理解C语言 static、extern与指针函数
  • 请教C语言编程实现 static ip 掩码、网关 设
  • C语言中auto,register,static,const,volatile的区别详细解析
  • C语言基础知识点解析(extern,static,typedef,const)
  • 2013年7月和2013年8月编程语言排行榜
  • 如何在GTK2.0下实现国际化(语言选择根据自己设置的语言,不用系统的语言)
  • 2017 年热门编程语言排行榜出炉,你的语言上榜没?
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 苹果OS X和IOS下最新编程语言swift介绍
  • 求助,在linux下,c语言和汇编语言的接口是什么?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • C语言中间语言 CIL
  • PHP编程语言介绍及安装测试方法
  • 最近学JSP,苦于HTML语言和JAVA语言太差,请教推荐几本书,thanks.
  • c语言实现MD5算法完整代码示例
  • 动态编程语言 LIME编程语言
  • 以NetBeans IDE为例介绍如何使用XML中Schema语言
  • C语言如何改变当前语言环境
  • c语言基于libpcap实现一个抓包程序过程
  • 如何在VIM中使汇编语言和C语言自动缩进?
  • HTML超文本标记语言教程及实例
  • 我安装的linux时默认语言选择的是中文,又乱码,怎么可以解决?怎么更改默认语言成英文?
  • MD5算法的C语言实现
  • Redhat9安装时语言只选择了中文,现在还能再增加其它语言的支持吗?如英文
  • HTML 超文本标记语言简介
  • 请问哪里有ubuntu 9.0版本的中文语言包和KDE的中文语言包下载,我用Google搜索了很多地方都没有!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3