【发布时间】:2021-07-05 06:42:25
【问题描述】:
int ICOperator::ICStarts( const char *port )
{
if ( NULL == OpenReader) { qDebug() << ""; }
this->devNo = this->OpenReader( 0, sPort );
return this->devNo;
}
如函数所示,qDebug()并没有真正执行,但程序会崩溃,如果注释如下:
int ICOperator::ICStarts( const char *port )
{
// if ( NULL == OpenReader) { qDebug() << ""; }
this->devNo = this->OpenReader( 0, sPort );
return this->devNo;
}
在 qDebug() 中会发生什么?可能会出现堆栈错误?
【问题讨论】:
-
两个sn-ps中哪个会导致崩溃?这不是很清楚。也请花一些时间阅读the help pages,阅读SO tour,阅读How to Ask,以及this question checklist。最后请学习如何创建minimal reproducible example,以及如何edit 来改进您的问题。
-
顺便说一下,如果
OpenReader是成员函数(而不是变量),那么获取指向它的指针的正确方法是使用指向运算符&。此外,NULL在 C++ 中不推荐用于空指针,并且已经存在很长时间了。使用nullptr(或0用于 C++11 之前的编译器)。 -
顺便问一下,
OpenReader到底是什么?再次,请edit 向我们展示minimal reproducible example 的问题(强调最小 部分)。