如果你认为本系列文章对你有所帮助,请大家有钱的捧个钱场,点击此处赞助,赞助额0.1元起步,多少随意
声明:本文只用于个人学习交流,若不慎造成侵权,请及时联系我,立即予以改正
锋影
email:174176320@qq.com
在使用QNX Momentics IDE开发C++代码时,出现如下的错误提示:
根据这个错误描述,只知道是C/C++ Problem,但是具体是什么原因,编译器很吝啬,什么也没有告诉我们,或许它自己都无法清楚的表达。好在从最近一次编译OK的代码到目前为止,改变的代码并不多,逐一排除后发现,是这两行代码导致发生了这样的问题,去掉后一切OK:
int value;
cin >> value;
将int value改为char或string类型后没有编译错误,类似的,输入参数为float,double类型都会出现一样的问题。查询baidu,google和stackflow都没有找到类似的解决方案,或许使用QNX的人本身就太少了。最后没有办法,使用string来绕开这个问题,最后解决方案如下:
string str;
cin >> str;
int value = atoi(str.data());
double = value = atof(str.data());
难道QNX下的C++不支持cin输入int,float,double吗?进入qnxide目录,查看istream的源代码,也有对int,float和double的>>操作符重载(如果没有重载应该编译报错并显示不存在的函数重载才对)。后来在google上看到一篇文章,说可能是target系统的支持问题,因为我的QNX程序最后是部署到QNX系统上运行了,难道是这个原因吗?Oh,MyGod!
项目进度要紧,不去深究它了。
今天又出现这样的问题,经过检查,发现是项目引用的lib文件没有生成,导致依赖的lib库文件找不到。还在可以到console控制台中找到错误的原因所在,解决了这个问题。看来发生C++ Problem的问题处理目标平台的关系,还有编译>链接>make之间的原因。