c++ - C++中的C代码不兼容参数错误

标签 c++

在 C 中这部分代码工作正常但在 C++ 中我得到一个错误:

argument of type "void *" is incompatible with parameter of type "FILE *"

我该如何解决?这是代码的相关部分:

static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
    {

        curl_off_t nread;

        size_t retcode = fread(ptr, size, nmemb, stream); /*i get an error on this line on stream */

        nread = (curl_off_t)retcode;

        fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T
            " bytes from file\n", nread);
        return retcode;

    }

实际上最终解决方案很简单。所以如果它对任何人有帮助,我只需将 void* 更改为 FILE *ptr 和 FILE *stream 就可以了

最佳答案

   size_t retcode = fread((FILE*)ptr, size, nmemb, stream); /*i get an error on this line on stream */

这是快速而肮脏的答案。我的问题是,如果 ptr 始终是指向 FILE 的指针,那么为什么要将参数声明为 void*?

void pointers: difference between C and C++拥有您可能想要的所有解释。我已将此问题标记为重复问题,但希望在短期内帮助您渡过难关。

关于c++ - C++中的C代码不兼容参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36962583/

相关文章:

c++ - 我在哪里可以下载到 GNU C++ 标准库的源代码?

c++ - 为什么我可以在 constexpr 函数中修改 const_cast-ed 对象?

c++ - 通知格式错误的模板实例化的最佳方式是什么?

c++ - 欧拉角的计算

c++ - 如何在 C++ 中为多个类实现公共(public)仿函数

c++ - MFC中可重用的后台线程

c++ - 为什么尝试使用显式类型参数调用模板成员函数时会出错?

现有对象的指针/引用的 C++ 容器

c++ - 这个 Python 切片语句的 C++ 等效代码是什么?

c# - 删除 SWF 文件中的填充