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