在 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/