代码之家  ›  专栏  ›  技术社区  ›  RTC222

无法将int64_to强制转换为const void ptr

c
  •  0
  • RTC222  · 技术社区  · 1 年前

    我使用C程序来调用NASM程序。在返回时,NASM将一个指向数组缓冲区的指针传递回C。我想用fwrite将该数组缓冲区写入文件。为此,我需要将NASM返回的int64_t强制转换为fwrite的const void*ptr。以下是我迄今为止所做的尝试:

    const void *output_ptr = rp;
    const void *output_ptr = *(const void)rp;
    const void *output_ptr = *(const void *ptr)rp;
    *output_ptr = *(const void *ptr)rp;
    

    但这些都不起作用。这似乎应该是一个简单的问题,但在互联网上搜索和Stack Overflow并没有找到任何答案。

    以下是文件写入代码:

    FILE *fp = fopen (output_file.bin, "wb");
    if (fp == NULL  )
        return -1;
    fwrite (output_ptr, 8, length, fp);
    fclose (fp);
    

    谢谢你在这方面的帮助。

    1 回复  |  直到 1 年前
        1
  •  5
  •   Eric Postpischil    1 年前

    强制转换操作的形式是 ( type ) operand

    指向 const -合格的 void const void * const void (不是指针)或 const void *ptr (其中具有标识符, ptr ,不是类型的一部分)。

    所以你想要 (const void *) rp