c++ - 在 MSVC 中对 void * 执行指针运算时出错

标签 c++ visual-c++ void-pointers

Error    1    error C2036: 'const void *' : unknown size    file.cpp     111

我不听。 GCC 从不提示 void * 指针运算,即使在 -ansi -pedantic -Wall 上也是如此。有什么问题?

这是代码-

struct MyStruct {

    const void *buf;    // Pointer to buffer  
    const void *bufpos; // Pointer to current position in buffer

};

...

size_t    someSize_t, anotherSize_t;
MyStruct *myStruct = (MyStruct *) userdata;
...
  if ( (myStruct->bufpos + someSize_t) > 
       (myStruct->buf + anotherSize_t) ) { // Error on this line
     ...

最佳答案

您不能对 void * 指针进行指针数学运算。将 oData->bufposoData->anotherConstVoidPtr 转换为编译器知道如何处理的内容。由于您似乎在寻找可能以字节为单位的大小,因此转换为 char * 应该可行:

if (((char *)oData->bufpos + someSize_t) ...

关于c++ - 在 MSVC 中对 void * 执行指针运算时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3498850/

相关文章:

c++ - 将 CString 转换为字符数组?

c++ - 如何以 vector 形式捕获输出而不是用 C++ 打印输出

c++ - 从 ‘void*’ 到 ‘unsigned char*’ 的无效转换

c++ - 如何在 CmakeList 中导入 Qtquickcontrol

c++ - 是否有一个库可以从数据包的 winpcap 原始数据中获取 IP 地址和端口?

c++ - 指向 STL 容器的指针安全吗?

c++ - 在 Linux 和 gcc 上没有 _fdopen

c++ - 为类似于股票的整数相加分配内存

c - 在 C 中将 const 赋值给非常量

c - 跨平台使用 void 指针