gpt4 book ai didi

c++ - 如何在 64 位系统中将 FILE* 转换为数字句柄?

转载 作者:行者123 更新时间:2023-11-30 02:49:30 26 4
gpt4 key购买 nike

我使用嵌入式 JavaScript 引擎,我曾经将 fopen() 的结果作为数字传递给 JS 代码。

int numeric_handle = (int)fopen(*P1, "rb");
return Number::New(numeric_handle); // Return to JavaScript

但是现在我需要在64位系统中重新编译,我得到了

fatal error: cast from pointer to smaller type 'int' loses information

现在我有点卡住了,我该如何保持系统的设计,同时尽可能少地更改代码?我正在考虑拥有一个 HashMap ,一个包含 FILE* 并返回该数组中的 ID 的数组。但这将意味着额外的内存管理、额外的查找。

最佳答案

long 应该足够了,但你也可以使用字节缓冲区

FILE *f;
char buffer[sizeof(f)];
memcpy(buffer, &f, sizeof(f));

为什么需要这样的 hack?

关于c++ - 如何在 64 位系统中将 FILE* 转换为数字句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21155458/

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