C ++ Identifier Not Found错误

时间:2013-05-08 17:06:29

标签: c++

我为“启动过程”找到了标识符未找到错误:

int main(int argc, char* argv[])
{

    bool result=startProcess(argc, argv);
    return 0;
}

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


}

但为什么?

4 个答案:

答案 0 :(得分:3)

在使用函数之前,至少需要声明函数,如果没有定义的话。尝试将它放在文件的顶部。

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

以上是声明,您告诉编译器,在某些时候,您将为该函数提供定义,这是:

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

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

答案 1 :(得分:3)

您尚未在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;
}

答案 2 :(得分:2)

如果你想在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的定义。

答案 3 :(得分:1)

在主要功能之前制作原型。

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