2010-12-07 5 views
3

기능 구현을 별도의 파일로 작성하기위한 올바른 구문은 무엇입니까?별도의 파일로 기능 구현

foo.h

int Multiply(const int Number); 

foo.cpp의 난이 많이 사용 볼 수 있지만 내가 그것을 할 때 내가하는 데 오류가 발생

#include "foo.h" 

int Multiply(const int Number) 
{ 
    return Number * 2; 
} 

: 예를 들어, 누락 된 기능은 main()입니다. 작업 코드를 컴파일하려고 할 때도 오류가 발생합니다.

+1

메인이없는 라이브러리라고 언급 했어야합니다. Visual Studio를 사용하는 경우 프로젝트의 구성 유형을 라이브러리로 변경하십시오. –

답변

7

대충 말하면 컴파일 할 C++ 파일 중 하나에 main() 함수가 있어야합니다. (

#include "foo.h" 
#include <iostream> 

using namespace std; 

int Multiply(const int Number) 
{ 
    return Number * 2; 
} 

int main() { 
    // your "main" program implementation goes here 
    cout << Multiply(3) << endl; 
    return 0; 
} 

또는 당신과 같이 다른 파일로 주요 기능을 분리 할 수 ​​: 컴파일러가 말한대로

, 당신은 너무처럼, 당신의 foo.cpp의 내부에 main() 메소드가 필요 이 작업을 수행하려는 경우) foo.cpp의 주요() 블록을 생략 :

main.cpp 

#include "foo.h" 
#include <iostream> 

using namespace std; 

int main() { 
    cout << Multiply(3) << endl; 
    return 0; 
} 

를 다음과 같이 컴파일

g++ main.cpp foo.cpp 
+0

'main' 함수가 아무것도 반환해야합니까? 또한,'apstring.cpp' 파일 ('apstring.h'를 보완)에서'main'을 볼 수 없습니다. – Maxpm

+0

일반적으로 사람이하는 일은 별도의 주 기능과 "도우미"기능입니다. 내 편집을 참조하십시오 –

+0

@SiGanteng : main.cpp의 "foo.h"는 "foo.cpp"가 아닌 이유는 무엇입니까? foo.cpp는 함수 정의가 있고 foo.h.So가 포함되어 있습니다. main.cpp에 "foo.cpp"를 포함하지 마십시오. – clarkson

2

C++의 모든 프로그램은 하나 이상의 모음 인 번역 단위, 일명 원본 파일입니다.

이 파일들이 컴파일 된 후 링커은 프로그램의 진입 점을 int main() 함수로 검색합니다. 찾을 수 없으므로 오류가 발생합니다.

프로그램을 빌드하면 실행 파일이 만들어지는 것을 잊지 마십시오. 진입 점이없는 실행 파일은 난센스입니다.

+0

이것은 프레임 워크 용입니다. 독립 실행 형 실행 파일이 필요하지 않습니다. – Maxpm

+0

그런 다음 .lib 또는 .dll (Windows)으로 빌드해야합니다. dll은 엔트리 포인트를 가질 수도 있지만 –

관련 문제