std*_*all 1 c casting void-pointers
我有无效指针,我想对它做指针运算.要这样做,我想将它转换为char指针.
( char * ) buf += current_size;
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我收到以下错误:
error: lvalue required as left operand of assignment
Run Code Online (Sandbox Code Playgroud)
我也尝试在整个左侧添加括号,但没有成功.为什么我这样做?
您可以通过编写赋值运算符来避免警告:
buf = (char *)buf + current_size;
Run Code Online (Sandbox Code Playgroud)
您收到警告的部分原因sizeof(void)是未定义,您无法进行算术运算void *.注意:GCC有一个扩展,它将代码视为sizeof(void) == 1,但这不符合C标准.
任务的LHS上的演员表对作业没有影响.