static和extern
来源:互联网 发布:织梦5.7sp2最新漏洞 编辑:程序博客网 时间:2024/06/05 08:31
一,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、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;
大工程下我们会碰到很多源文档。
文档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、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;
0 0
- static、extern和extern "c"
- 【static&extern】static和extern的区别
- static和extern
- static 和 extern 比较
- static和extern
- static和extern c
- extern和static释析
- extern和static
- const static 和 extern
- static和extern
- static和extern
- extern和static关键字
- static和extern
- static和extern
- static和extern
- 关于static和extern
- extern和static释析
- static和extern
- memcache学习笔记1(在windows下安装PHP的扩展memcache)
- PL/SQL 导入或导出数据库
- MCU编程软件
- Android studio 自定义logcat各种信息输出颜色
- NGUI研究院之Sprite精灵与精灵动画的使用(二)
- static和extern
- Python 学习(3)---Python标准异常总结
- 嵌入式开发 tftp使用方法
- pthread_cancel的带来的一个死锁问题(验证)
- hdu 1596 find the safest road (dijkstra)
- 利用mysql里的show global status和show variables来优化mysql的配置参数
- 《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用
- 运算符重载 - 判断平行
- Android各种访问权限Permission详解