我正在写一个数据混搭函数,我正在修改一些动态位压碎机音频过滤器的音频数据。对我来说使用静态变量很方便,因为它们的值在函数调用之间传递,这有助于通过在渲染回调中增加等来实现一些有趣的基于时间的效果。让静态函数变量取参数值C
例如,一种效果使用sin函数随时间调制一些声音效果。像这样:
void mangle(float * data, int n) {
static bool direction = false;
static float bottom = 0;
static float top = n;
static float theta = 0;
theta += 5;
// data = sin(theta) etc..
所以,我希望theta
进行一次初始化,并且比随时间修改。同样,顶部想成为静态变量,因为我稍后在函数中修改它。另外,top
应该取参数n
的值,因为n
根据程序状态而改变。但是,当我去分配n
到top
,我得到的编译器错误
Initializer element is not a compile-time constsant
。
有没有办法给静态变量赋一个参数?有没有另外一种方法来实现我想要的静态变量?我知道我可以使用实例变量,但我觉得太多了。
听起来不错,只要你明白你的过滤器不是线程安全的。 –