2

我得到“startProcess”的标识符未找到错误:

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

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

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


}

但为什么?

4

4 回答 4

3

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

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

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

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

声明定义之间的这种差异对于能够将代码分成单独的文件很重要。如果您将 的定义放在startProcess不同的文件中,编译器在编译包含main. 但是,通过声明,您承诺它存在于某个地方。

于 2013-05-08T17:07:45.660 回答
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;
}
于 2013-05-08T17:07:53.230 回答
2

startProcess如果你想把它的定义放在 main 之后,你应该把它的声明放在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

于 2013-05-08T17:07:59.657 回答
1

在你的主要功能之前制作一个原型。

bool startProcess(int argc, char* argv[]);
于 2013-05-08T17:07:53.503 回答