ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言可重入函数和不可重入函数

2022-02-27 18:31:23  阅读:249  来源: 互联网

标签:重入 函数 int long C语言 state1 static


【1】什么是可重入函数和不可重入函数呢?

        可重入的函数:一般是保存在栈里面的,是可以被编译器随机的分配内存并且释放的函数称为可重入函数

        不可重入函数:一般是指函数返回值是static 型的或者是函数内部定义了static变量或者使用了全局变量等称为不可重入函数

 

【2】为什区分可重入和不可重入函数呢?

        因为多任务操作系统中,需要一个函数要满足同时被多个任务调用,而且要确保每个任务都能单独的维护自己的栈空间或者自身在内存寄存器中的值

 

【3】怎样识别函数和不可重入函数呢?

  

/*This will either be
passed on the stack or in a CPU register. Either way is safe as
each task maintains its own stack and its own set of register
values. */

long int handler(int var1) { int var2; var2 = var1 + 2; return var2; } //可重入函数
 /* In this case lVar1 is a global variable so every task that calls
the function will be accessing the same single copy of the variable. */
long var1 long int handler(void) {
/* This variable is static so is not allocated on the stack. Each task
that calls the function will be accessing the same single copy of the
variable. */

static long state1 = 0; long 1Return; switch(state1) { case 0: 1Return = state1+10; state1 = 1; break; case 1: 1Return = state1+20; state1 = 0; break; } } //不可重入函数

 

标签:重入,函数,int,long,C语言,state1,static
来源: https://www.cnblogs.com/lzqd/p/15943008.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有