C++出现illegal indirection错误,这是C语言里面的一个错误直译就是“ 非法的取值”。
如果把一个实变量当作一个指针赋值,则产生C2100illegal indirection编译错误。 因为void指针,虽然它可以接收任何类型的数据,但从它取数据回来的时候需要强制转换成相应的类型。
正确方式:了解局部变量、函数调用的相关内容,改错如下:
void main()
{
char a[30];
gets(a);
change(a);//
puts(a);
}
扩展资料:
c++常见错误中英文对照表
fatal error C1003: error count exceeds number; stopping compilation
中文对照:(编译错误)错误太多,停止编译
分析:修改之前的错误,再次编译
fatal error C1004: unexpected end of file found
中文对照:(编译错误)文件未结束
分析:一个函数或者一个结构定义缺少“}
fatal error C1083: Cannot open include file: 'xxx': No such file or directory
中文对照:(编译错误)无法打开头文件xxx:没有这个文件或路径
分析:头文件不存在、或者头文件拼写错误、或者文件为只读
fatal error C1903: unable to recover from previous error(s); stopping compilation
中文对照:(编译错误)无法从之前的错误中恢复,停止编译
分析:引起错误的原因很多,建议先修改之前的错误
C++出现illegal indirection错误,这是C语言里面的一个错误直译就是“ 非法的取值”;
如果把一个实变量当作一个指针赋值,则产生C2100illegal indirection编译错误。
因为void指针,虽然它可以接收任何类型的数据,但从它取数据回来的时候需要强制转换成相应的类型。
问题在于你的#define r 5.0;
应该写成#define r 5.0 //没有分号
如果有分号,编译器就会理解成
s=PI*5.0;*5.0;;当然就会出错了.