2013-05-08 94 views
2

我得到IDENTIFER未找到錯誤的 「startProcess」:C++標識Not Found錯誤

int main(int argc, char* argv[]) 
{ 

    bool result=startProcess(argc, argv); 
    return 0; 
} 

bool startProcess(int argc, char* argv[]) 
{ 


} 

但是,爲什麼?

+1

在使用它之前聲明它。 OMG !!! – 2013-05-08 17:07:34

回答

3

如果沒有定義,函數在使用前至少需要聲明。嘗試把它放在文件的頂部。

bool startProcess(int argc, char* argv[]); 

上面是聲明,你告訴,在某些時候,你要的功能,這是該提供定義編譯:

bool startProcess(int argc, char* argv[]) 
{ 
    code here...  
} 

聲明定義之間的差異對於能夠將您的代碼分離爲單獨的文件很重要。如果您已將的定義startProcess置於不同的文件中,編譯器在編譯包含main的文件時絕不會真正看到它。然而,在聲明,你承諾它存在的地方。

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; 
} 
+0

我完全忘記了這一點。在C#中編碼時間過長。謝謝!!!!! – Ron 2013-05-08 17:17:41

+0

@Ron:很高興幫助;) – 2013-05-08 17:18:16

1

在您的主要功能之前製作原型。

bool startProcess(int argc, char* argv[]); 
2

,你應該把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定義。

相關問題