C++ Xcode中的错误警告?

C++ Xcode中的错误警告?,c++,xcode,C++,Xcode,以下代码在Xcode中的指示行上有一条警告。 但是,此警告是否确实有效? 如果这是一个有效的警告,这是怎么回事? 如果此警告不正确,是什么导致Xcode在此行上创建警告 编辑:另外,为什么在警告发生行上方的while循环中引用了prevPtr时没有警告 警告内容为:变量“prevPtr”在此处使用时可能未初始化 它位于行prevPtr->next=delPtr->next 我相信如果不初始化变量,就不可能到达这一行。这将使这个警告毫无意义 void myEditor::deleteLine(in

以下代码在Xcode中的指示行上有一条警告。
但是,此警告是否确实有效?
如果这是一个有效的警告,这是怎么回事?
如果此警告不正确,是什么导致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
仅分配给循环中的。它没有取消引用,因此这不是错误