我可以成功地将函数传递给 signal(),但我无法想出一种在不使用 static
或全局变量的情况下将参数传递给函数的方法。 functionontimer
只是更新一个数组。
if (signal(SIGALRM, (void (*)(int)) functionontimer) == SIG_ERR)
{
return(-1);
}
有没有办法在不使用static
或全局变量的情况下将指针与函数一起传递?理想情况下,我会看到 functiontimer 的定义类似于 functiontimer(int *data, index)。
最佳答案
Is there anyway to pass a pointer along with the function without using
static
or a global variable? I would ideally see functiontimer be defined something likefunctiontimer(int *data, index)
不,没有,如果您强制输入需要附加参数的函数(例如通过将其转换为示例中所示的方式),那么当系统使用参数的数量和类型调用它时,会出现未定义的行为它希望使用函数实际定义接收的参数数量和类型来代替。
尚不清楚您想要建议的行为的目的是什么,但信号处理很可能无法达到该目的。它肯定不会按照您希望的方式达到目的。
关于c - 将带有参数的函数传递给信号处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53917679/