C++ Xcode中的错误警告?
以下代码在Xcode中的指示行上有一条警告。C++ Xcode中的错误警告?,c++,xcode,C++,Xcode,以下代码在Xcode中的指示行上有一条警告。 但是,此警告是否确实有效? 如果这是一个有效的警告,这是怎么回事? 如果此警告不正确,是什么导致Xcode在此行上创建警告 编辑:另外,为什么在警告发生行上方的while循环中引用了prevPtr时没有警告 警告内容为:变量“prevPtr”在此处使用时可能未初始化 它位于行prevPtr->next=delPtr->next 我相信如果不初始化变量,就不可能到达这一行。这将使这个警告毫无意义 void myEditor::deleteLine(in
但是,此警告是否确实有效?
如果这是一个有效的警告,这是怎么回事?
如果此警告不正确,是什么导致Xcode在此行上创建警告 编辑:另外,为什么在警告发生行上方的while循环中引用了
prevPtr
时没有警告
警告内容为:变量“prevPtr”在此处使用时可能未初始化它位于行
prevPtr->next=delPtr->next
我相信如果不初始化变量,就不可能到达这一行。这将使这个警告毫无意义
void myEditor::deleteLine(int num)
{
Line *delPtr = head;
if (delPtr == NULL) {
return;
}
if (head->linenum == num) {
head = head->next;
}
else {
Line *prevPtr;
while (delPtr != NULL && delPtr->linenum != num) {
prevPtr = delPtr;
delPtr = delPtr->next;
}
if (delPtr == NULL) {
cout << "Line " << num << " does not exist." << endl;
}
else {
prevPtr->next = delPtr->next; // warning appears here
}
}
delete delPtr;
}
void myEditor::deleteLine(int-num)
{
线*delPtr=头部;
if(delPtr==NULL){
返回;
}
如果(head->linenum==num){
头部=头部->下一步;
}
否则{
行*prevPtr;
while(delPtr!=NULL&&delPtr->linenum!=num){
prevPtr=delPtr;
delPtr=delPtr->next;
}
if(delPtr==NULL){
cout如果您在Xcode中使用“Product>Analyze”菜单项,它将向您显示有关此类警告的更多详细信息。以下是我尝试时得到的结果(在对行的定义做了一些假设之后):
在这种情况下,这似乎是分析失败:编译器没有意识到,对于while
循环运行零次,要么delPtr==NULL
(这会导致提前返回),要么delPtr->lineNum==num
,这意味着head->lineNum==num
(这将导致else
块无法运行)
尽管如此,读者并不清楚此代码是否正确。建议重新构造代码以避免此警告
关于您在编辑中添加的问题(“为什么在while循环中引用prevPtr时没有警告”):prevPtr
仅分配给循环中的。它没有取消引用,因此这不是错误。如果使用“产品>分析”Xcode中的菜单项,它将向您显示有关此类警告的更多详细信息。以下是我尝试时得到的结果(在对行的定义做了一些假设之后):
在这种情况下,这似乎是分析失败:编译器没有意识到,对于while
循环运行零次,要么delPtr==NULL
(这会导致提前返回),要么delPtr->lineNum==num
,这意味着head->lineNum==num
(这将导致else
块无法运行)
尽管如此,读者并不清楚此代码是否正确。建议重新构造代码以避免此警告
关于您在编辑中添加的问题(“为什么在while循环中引用prevPtr时没有警告”):prevPtr
仅分配给循环中的。它没有取消引用,因此这不是错误。如果使用“产品>分析”Xcode中的菜单项,它将向您显示有关此类警告的更多详细信息。以下是我尝试时得到的结果(在对行的定义做了一些假设之后):
在这种情况下,这似乎是分析失败:编译器没有意识到,对于while
循环运行零次,要么delPtr==NULL
(这会导致提前返回),要么delPtr->lineNum==num
,这意味着head->lineNum==num
(这将导致else
块无法运行)
尽管如此,读者并不清楚此代码是否正确。建议重新构造代码以避免此警告
关于您在编辑中添加的问题(“为什么在while循环中引用prevPtr时没有警告”):prevPtr
仅分配给循环中的。它没有取消引用,因此这不是错误。如果使用“产品>分析”Xcode中的菜单项,它将向您显示有关此类警告的更多详细信息。以下是我尝试时得到的结果(在对行的定义做了一些假设之后):
在这种情况下,这似乎是分析失败:编译器没有意识到,对于while
循环运行零次,要么delPtr==NULL
(这会导致提前返回),要么delPtr->lineNum==num
,这意味着head->lineNum==num
(这将导致else
块无法运行)
尽管如此,读者并不清楚此代码是否正确。建议重新构造代码以避免此警告
关于您在编辑中添加的问题(“为什么在while循环中引用prevPtr时没有警告”):prevPtr
仅分配给循环中的。它没有取消引用,因此这不是错误