gpt4 book ai didi

c++ - 使用 bit_cast 在 C++20 中将整数转换为 GLvoid* 是否有效?

转载 作者:太空狗 更新时间:2023-10-29 19:55:57 25 4
gpt4 key购买 nike

A previous question已询问如何在 C++11 中的整数类型和 GLvoid* 之间进行转换(基于该问题的标签),但在这里我对 C++20 感兴趣。

现在有 std::bit_cast 作为进行类型转换的选项,我想知道这是否是将整数与出于历史原因采用的 OpenGL 函数一起使用的“正确”方法GLvoid* 表示字节偏移量(例如 glDrawRangeElements ),或者是否应该使用上一个问题中引用的方法。

最佳答案

bit_cast绝对是这里的错误。 void*不需要与大多数整数类型的大小相同。 bit_cast 要求源类型和目标类型具有完全相同的大小。因此,在 32 位系统上,一个 std::bit_cast<void*>(24ull)是一个编译错误。在 64 位系统上,一个简单的 std::bit_cast<void*>(24)是一个编译错误。

甚至没有uintptr_t要求与指针具有相同的大小;只是它至少 与指针一样多。如果有更多,则 bit_cast会窒息。

只需做一个 reinterpret_cast<void*> ,如果您不想使用 C 风格的转换。

关于c++ - 使用 bit_cast 在 C++20 中将整数转换为 GLvoid* 是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57579237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com