C++ 向回调函数传递参数的最佳方式是什么?(C&;C&x2B;&x2B;)

C++ 向回调函数传递参数的最佳方式是什么?(C&;C&x2B;&x2B;),c++,c,C++,C,我现在正在学习SDL,我正在尝试使用计时器回调函数 函数SDL_AddTimer()只提供一个要传递的参数,但我想向其中传递不同类型的变量。 () 我认为一种解决方案是,我可以声明一个包含所有变量的结构,但我不确定这是否是最好的方法 谢谢你的帮助~~ 我认为一种解决方案是,我可以声明一个包含所有变量的结构,但我不确定这是否是最好的方法 是的,这是在出现接受void*的回调时传递参数的正确且最佳的方法。然后从回调内部强制转换回结构类型 当使用pthreads/Windows线程或其他类似的公共ap

我现在正在学习SDL,我正在尝试使用计时器回调函数

函数SDL_AddTimer()只提供一个要传递的参数,但我想向其中传递不同类型的变量。 ()

我认为一种解决方案是,我可以声明一个包含所有变量的结构,但我不确定这是否是最好的方法

谢谢你的帮助~~

我认为一种解决方案是,我可以声明一个包含所有变量的结构,但我不确定这是否是最好的方法

是的,这是在出现接受
void*
的回调时传递参数的正确且最佳的方法。然后从回调内部强制转换回结构类型

当使用pthreads/Windows线程或其他类似的公共api时,也会出现同样的情况

我认为一种解决方案是,我可以声明一个包含所有变量的结构,但我不确定这是否是最好的方法

是的,这是在出现接受
void*
的回调时传递参数的正确且最佳的方法。然后从回调内部强制转换回结构类型


使用pthreads/Windows线程或其他类似的常用api时也会出现同样的情况。

就是这样。还有什么其他的方法呢?;-)试着看看会发生什么@下划线\u d有些人习惯于使用肮脏的废话,将整数转换为空*然后从回调内部转换回整数。非常脆弱和糟糕的代码,但似乎有点常见。使用这样的结构是一种方法。您只需要记住,参数所指向的结构的生命周期必须足够长。@Caleth(指针除外)现在在很多系统上都是64位的。从理论上讲,你也可以得到对齐问题,陷阱表示等等,把值0转换成指针也不是一个好主意。我们应该简单地避免使用脆弱、愚蠢的黑客。分配一个
静态int
并传递一个指向该int的指针不是火箭科学……这就是方法。还有什么其他的方法呢?;-)试着看看会发生什么@下划线\u d有些人习惯于使用肮脏的废话,将整数转换为空*然后从回调内部转换回整数。非常脆弱和糟糕的代码,但似乎有点常见。使用这样的结构是一种方法。您只需要记住,参数所指向的结构的生命周期必须足够长。@Caleth(指针除外)现在在很多系统上都是64位的。从理论上讲,你也可以得到对齐问题,陷阱表示等等,把值0转换成指针也不是一个好主意。我们应该简单地避免使用脆弱、愚蠢的黑客。分配一个
静态int
并传递一个指向该int的指针不是火箭科学…我明白了!!谢谢~~我明白了!!多谢各位~~