look/be 的第三个参数是什么意思,比如 XInputGetBatteryInformation()

What is the 3rd parameter meant to look/be like XInputGetBatteryInformation()

抱歉,如果我把这个 post 搞砸了,我第一次 post 在 Whosebug 上,我通常会向 discord 服务器寻求帮助,但他们不支持 C++,我是 C++ 的新手,我正在尝试开发一个 Bakkesmod 插件,它使用 XInput,想法是当控制器电池电量变化时它会更新你,但我不确定如何获取它的电池信息,它提到发送一个指针,但这对我来说有点棘手,如果有人解释的话我会很高兴。 API Reference

您需要创建一个 XINPUT_BATTERY_INFORMATION 类型的变量并传递一个指向它的指针。

XINPUT_BATTERY_INFORMATION my_battery;
XInputGetBatteryInformation(user_index, dev_type, &my_battery);
// Now my_battery contains the battery information

如果你或我用高级语言编写这个函数,我们可能会写出更像

的东西
XINPUT_BATTERY_INFORMATION XInputGetBatteryInformation(DWORD, BYTE);

即我们将 return 结构。但是,您在这里看到的是旧 C 代码中的常见习语,例如 WinAPI(是的,WinAPI 是一个 C 库,您恰好从 C++ 代码调用它)。在较旧的 C 代码中,想要 return 结构大于一个单词的函数通常会采用该类型的输出参数。

DWORD XInputGetBatteryInformation(DWORD, BYTE, XINPUT_BATTERY_INFORMATION*);

DWORD return 值为错误代码)

这是出于几个原因。这些函数被设计用于低级环境,因此通过为调用者提供控制 where 结果的能力,我们让他们更多地控制他们的内存管理,而不是迫使他们可能多次复制一个值以将其放在需要的位置。