C++关于void*的有关问题
C++关于void*的问题这段代码编译出现了下面的错误:#include iostreamusing namespace stdint main(){vo
C++关于void*的问题
这段代码编译出现了下面的错误:
#include <iostream>
using namespace std;
int main()
{
void* pVoid;
(char*) pVoid++;
(char*) pVoid += 2;
return 0;
}
/home/chase/codes/C++/sometest/test2/main.cpp|8|错误: ISO C++ 不允许对类型为‘void*’的指针自增 [-fpermissive]|
/home/chase/codes/C++/sometest/test2/main.cpp|9|错误: 赋值运算的左操作数必须是左值|
||=== Build finished: 2 errors, 0 warnings ===|
我已经对void*类型的pVoid进行了强制转换,为什么还是不能进行自增和赋值操作?
[解决办法]按照ANSI(American National Standards Institute)标准,不能对void指针进行算法操作,即下列操作都是不合法的:
void * pvoid;
pvoid++; //ANSI:错误
//ANSI标准之所以这样认定,是因为它坚持:进行算法操作的指针必须是确定知道其指向数据类型大小的。
[解决办法]void*不算扩展是没法++,转换以后是也右值不是左值,内建++需要左值,语义错误编译当然过不去。
这么个基本问题支支吾吾半天除了10L就没个靠谱的,CSDN没人了?
还有LZ,你问之前可以确定一下你是不是理解了错误是什么意思,明明都用中文说出来了。
麻烦你自己试试再说。
转换了也是右值,内建++需要左值。
还有LZ,先试试看懂错误是什么意思把。缺搜索关键字么?
[解决办法]gcc file.c是正确的
g++ file.cpp是错误的。