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

startProcessmain の定義を の後に置きたい場合は、 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 に答える