我得到IDENTIFER未找到錯誤的 「startProcess」:C++標識Not Found錯誤
int main(int argc, char* argv[])
{
bool result=startProcess(argc, argv);
return 0;
}
bool startProcess(int argc, char* argv[])
{
}
但是,爲什麼?
我得到IDENTIFER未找到錯誤的 「startProcess」:C++標識Not Found錯誤
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;
}
我完全忘記了這一點。在C#中編碼時間過長。謝謝!!!!! – Ron 2013-05-08 17:17:41
@Ron:很高興幫助;) – 2013-05-08 17:18:16
在您的主要功能之前製作原型。
bool startProcess(int argc, char* argv[]);
,你應該把startProcess
聲明之前主,如果你希望把它定義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[])
{
}
,或者你可以main
之前直接放startProcess
定義。
在使用它之前聲明它。 OMG !!! – 2013-05-08 17:07:34