当前位置: 技术问答>linux和unix
重谢: FC5 下GCC 4.1.0 编译器存在BUG? error: invalid lvalue in assignment
来源: 互联网 发布时间:2015-12-15
本文导语: 各位前辈高手,谁能帮我解决一下这个奇怪的问题...重谢重谢 一个简单的语句都出错了,真是奇怪阿...下面是实例 代码: #include int main(int argc, char* argv[]) { void* pp = 0; ((int*)pp) ++; } 报错: g++ -c -o main.o -c -g...
各位前辈高手,谁能帮我解决一下这个奇怪的问题...重谢重谢
一个简单的语句都出错了,真是奇怪阿...下面是实例
代码:
#include
int main(int argc, char* argv[])
{
void* pp = 0;
((int*)pp) ++;
}
报错:
g++ -c -o main.o -c -g main.cpp
/home/lucifer/C++/Test1/main.cpp(6): error: invalid lvalue in assignment
make: *** [main.o] Error 1
Leave the directory: /home/lucifer/C++/Test1
*********Make Finished*********
但是用
pp = (((int*)pp) + 1);
倒是没问题
按理来说这么一个简单的语句不可能有问题的啊,我在FreeBSD 5和win32下都测试了一下没问题,不知道是不是FC 5自带的gcc 4.1.0的问题不?谢谢大家帮忙给个建议咋办...
一个简单的语句都出错了,真是奇怪阿...下面是实例
代码:
#include
int main(int argc, char* argv[])
{
void* pp = 0;
((int*)pp) ++;
}
报错:
g++ -c -o main.o -c -g main.cpp
/home/lucifer/C++/Test1/main.cpp(6): error: invalid lvalue in assignment
make: *** [main.o] Error 1
Leave the directory: /home/lucifer/C++/Test1
*********Make Finished*********
但是用
pp = (((int*)pp) + 1);
倒是没问题
按理来说这么一个简单的语句不可能有问题的啊,我在FreeBSD 5和win32下都测试了一下没问题,不知道是不是FC 5自带的gcc 4.1.0的问题不?谢谢大家帮忙给个建议咋办...
|
这个功能已经在GCC 3.4.3的C++ Compiler中被去掉了。
去掉的原因是为了程序安全。
你可以参考:
http://www.techcookie.com/forum/forum/viewthread?thread=49
去掉的原因是为了程序安全。
你可以参考:
http://www.techcookie.com/forum/forum/viewthread?thread=49
|
至于变通的办法,可以把程序修改为:
int main(int argc, char* argv[])
{
void* pp = 0;
int* intp;
intp = (int*)pp;
intp++;
}
int main(int argc, char* argv[])
{
void* pp = 0;
int* intp;
intp = (int*)pp;
intp++;
}
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。