「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[]);