- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
此代码出现在 CrossExample 中来自 superpowered.com :
static void playerEventCallbackA(void *clientData, SuperpoweredAdvancedAudioPlayerEvent event, void * __unused value) {
if (event == SuperpoweredAdvancedAudioPlayerEvent_LoadSuccess) {
SuperpoweredAdvancedAudioPlayer *playerA = *((SuperpoweredAdvancedAudioPlayer **)clientData);
playerA->setBpm(126.0f);
playerA->setFirstBeatMs(353);
playerA->setPosition(playerA->firstBeatMs, false, false);
};
}
playerA = new SuperpoweredAdvancedAudioPlayer(&playerA , playerEventCallbackA, samplerate, 0);
playerA->open(path, fileAoffset, fileAlength);
谁能帮我理解 if
语句中的第一行?特别是,我如何解释作业的右侧?
*((SuperpoweredAdvancedAudioPlayer **)clientData)
最佳答案
clientData
作为 void pointer
传递。随后,它被转换为 SuperpoweredAdvancedAudioPlayer
类型的pointer to pointer
。我 suposse clientData
在将它传递给函数之前是那种类型,这就是为什么需要强制转换的原因。我不知道为什么用这个 void*
而不是 SuperpoweredAdvancedAudioPlayer**
。不好,但并不罕见。
名为 playerA
的变量是指向 SuperpoweredAdvancedAudioPlayer
类型对象的指针。取消对指向指针的指针的引用,您将获得指向 SuperpoweredAdvancedAudioPlayer
对象的指针,与 playerA
的类型相同。
请注意,playerA
仅在 if block 内声明,它的生命到此结束。 block 外还有另一个 playerA
,必须在将其分配给任何东西之前声明。
关于c++ - 从 Superpowered CrossExample for Android 解释 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41175934/
此代码出现在 CrossExample 中来自 superpowered.com : static void playerEventCallbackA(void *clientData, Superp
我是一名优秀的程序员,十分优秀!