这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 静态函数是什么意思

共12条 1/2 1 2 跳转至

静态函数是什么意思

高工
2013-09-21 20:58:18     打赏
看代码。发现一些生命为static的函数,像这样的:
static __INLINE uint32_t SysTick_Config(uint32_t ticks)

不太理解。跟C++中的静态变量一样吗?
只记得C++里边,静态成员属于类而不熟悉类的实例。在C语言中就没什么概念了。

谁能讲讲



关键词: 静态     函数     是什么     意思    

高工
2013-09-21 21:03:34     打赏
2楼

自己百度到了:

静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。
关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限 于本文件。 使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。

c语言中static的语义1.static变 量:1).局部a.静态局部变量在函数内定义,生存期为整个源程序,但作用域与自动变量相同,只能在定义该变量的函数内使用。退出该函数后, 尽管该变量还继续存在,但不能使用它。b.对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 2).全局全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。但是他们的作用域,非静态全局 变量的作用域是整个源程序(多个源文件可以共同使用); 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。2.static函数(也叫内部函数)只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。区别于 一般的非静态函数(外部函数) static在c里面可以用来修饰变量,也可以用来修饰函数。 先看用来修饰变量的时候。变量在c里面可分为存在全局数据区、栈和堆里。其实我们平时所说的堆栈是栈而不包含对,不要弄混。





c语言中,static就有两个作用:
一是隐藏功能,对于static修饰的函数和全局变量而言
二是保持持久性功能,对于static修饰的局部变量而言。
并且,因为存放在静态区,全局和局部的static修饰的变量,都默认初始化为0


来自:http://blog.csdn.net/lidaqiang99/article/details/6646196



高工
2013-09-21 21:10:22     打赏
3楼

这样感觉跟类差不多了。一个文件就成了一个类,C语言还能这么整。



高工
2013-09-21 22:19:53     打赏
4楼

看了这些,感觉

其实还是和程序存储空间管理有关

想起一句话,一切语言,最后都要转化为IO翻转和空间存储。


高工
2013-09-21 22:26:13     打赏
5楼
atmel的库里边的东西。感觉atmel写库的人比st的水平要高一个档次。

高工
2013-09-21 22:42:12     打赏
6楼
学习学习

助工
2013-09-21 23:06:56     打赏
7楼
应该跟C语言里的静态函数是一样的

专家
2013-09-22 12:26:39     打赏
8楼
学习了

院士
2013-09-23 19:39:12     打赏
9楼
我倒觉得使用static函数的目的在于使其不被外部函数调用。

高工
2013-09-23 20:38:53     打赏
10楼
有时是为了说明仅限于定义的函数使用,防止外部函数调用的,不过可以做外部静态函数的声明,以延长其生存空间

共12条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]