2013-05-08 89 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定义。

相关问题