找不到C++标识符错误

C++ Identifier Not Found error

本文关键字:错误 标识符 C++ 找不到      更新时间:2023-10-16

"startProcess"的未找到标识符错误:

int main(int argc, char* argv[])
{
    bool result=startProcess(argc, argv);
    return 0;
}
bool  startProcess(int argc, char* argv[])
{

}

但为什么呢?

如果没有定义函数,则在使用它们之前至少需要声明它们。试着把这个放在文件的顶部。

bool startProcess(int argc, char* argv[]);

上面是一个声明,你告诉编译器,在某个时候,你将为函数提供一个定义

bool  startProcess(int argc, char* argv[])
{
   code here...    
}

声明定义之间的这种差异对于能够将代码分离到单独的文件非常重要。如果将startProcess定义放在另一个文件中,编译器在编译包含main的文件时将永远看不到它。然而,使用声明,您承诺它存在于某个地方。

您在main()之前没有声明该函数,因此编译器在调用时不知道startProcess的存在:

bool startProcess(int argc, char* argv[]); // <== Informs the compiler about
                                           //     the existence of startProcess
                                           //     (and about its signature)
int main(int argc, char* argv[])
{
    bool result = startProcess(argc, argv); // OK because of the declaration
                                            // above: the compiler knows that
                                            // somewhere (possibly in another
                                            // translation unit) the definition
                                            // of startProcess is provided
    return 0;
}
bool startProcess(int argc, char* argv[])
{
    // ...
}

或者,您可以将定义直接放在main():之前

bool  startProcess(int argc, char* argv[])
{
    // ...
}
int main(int argc, char* argv[])
{
    bool result = startProcess(argc, argv);
    return 0;
}

如果要将startProcess的定义放在main之后,则应将其声明放在main之前。

bool  startProcess(int argc, char* argv[]); //declare here
int main(int argc, char* argv[])
{
    bool result=startProcess(argc, argv);
    return 0;
}
bool  startProcess(int argc, char* argv[])
{
}

或者您可以将startProcess的定义直接放在main之前。

在主函数之前制作一个原型。

bool startProcess(int argc, char* argv[]);