我正在为不是 pure 且不一定是 reentrant 的函数寻找一个术语,但是第二次调用时会创建与调用它们时相同的状态第一次。
例如,此函数将不符合条件:
void CounterExample(int value)
{
static int STORE[5];
static int STORE_COUNT=0;
STORE[STORE_COUNT++] = value;
}
这会:
void Example(int value)
{
static int STORE[5];
static int STORE_COUNT=0;
STORE_COUNT = 0;
STORE[STORE_COUNT++] = value;
}
我特别在考虑硬件初始化功能。通常,他们会以某些方式设置GPIO,执行上电顺序,然后以某种方式配置硬件。如果以后需要重新初始化硬件,则可以再次调用此函数。但是,如果该功能还通过附加到一组已配置的结构来建立一些软件结构,那么我必须首先撤消该功能的工作才能再次调用该功能。
例如,一个comms驱动程序初始化函数可能会打开comms驱动程序,发送一些配置命令,然后调用另一个名为AddCommsCallback()
的函数,该函数为comms设备接收的数据注册默认回调。如果我想重置comms驱动程序,则不能简单地再次调用此函数,因为默认回调将添加到现有的过时回调中。
是否有与这两种类型的功能相关的特定术语(功绩通用术语除外!)?
答案 0 :(得分:0)
这是一个幂等功能。
以富有想象力的名称阅读更多信息:“ What is an idempotent operation?”
答案 1 :(得分:-2)
递归函数(DEF)是一个可以自行调用或处于潜在函数调用循环中的函数。正如定义所指定的,递归函数有两种类型。考虑一个调用自身的函数:我们称这种类型的递归为立即递归。