话说这么长时间的编程,竟然没有写一篇文章,感觉不是个好的编程人员,一个好的编程人员,要懂得分享;但是,当要写文章时,又不知道怎么写了,看来是要多加练习了,与编程一样,要勤练习。不说废话了,进入正题。
在之前没有对void*类型的指针进行操作时,自己认为其是可以通过“+”或“-”来进行字节的偏移,但直到今天实际中运到才发现,原来对其进行如下操作时,
void* pDataBuff = &stCameraInfo;
pDataBuff = pDataBuff + CRC_BYTE;
VS编译器会提示“void*” unknown size的error。这是为什么呢?不支持这样的操作吗??
对于此问题进行了探索,发现,通过用gcc编译器来进行编译时,没有该错误的发生,原因为在该编译器下将void* 默认为是char*类型进行操作,即void* 为一字节进行偏移;

本文探讨了在编程中遇到的`void*`指针与结构体转换的问题,尤其是在不同编译器环境下,如VS和GCC的处理差异。在VS下,由于`void*`的未知大小,直接使用`+`或`-`运算符进行字节偏移会导致错误,而GCC默认将其视为`char*`进行一字节偏移。这提醒我们理解不同编译器对`void*`的处理方式并正确使用指针转换。
最低0.47元/天 解锁文章
1420

被折叠的 条评论
为什么被折叠?



