我为“启动过程”找到了标识符未找到错误:
int main(int argc, char* argv[])
{
bool result=startProcess(argc, argv);
return 0;
}
bool startProcess(int argc, char* argv[])
{
}
但为什么?
答案 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[]);