2012-08-03 2 views
0

소스 및 헤더 파일을 이해하는 데 어려움을 겪고 있습니다. 소스 및 헤더 파일

1) /Users/xyz/Desktop/functions.cpp 위치에 'int add (int x, int y)'라는 함수가 들어있는 소스 파일 (functions.cpp)이 있습니다.

2) 헤더 파일 선언 소스 파일 (functions.cpp의 기능 포함될 (functions.h)는()의 주요 포함 /Users/xyz/Documents/function.h

3) 다른 소스 파일 (main.cpp)에 위치) '함수는'functions.cpp '에 정의 된'add() '함수를 호출해야합니다.'main.cpp '소스 파일의 위치는

입니다.이 파일들을 다른 위치에 배치하면됩니다. 이러한 개념을 더 잘 이해할 수 있습니다.

그래서 function.cppmain.cpp에 연결하려면 functions.h을 사용하십시오.

#include " " 

위의 include에서 사용해야하는 경로는 무엇입니까?

또한, .h 파일 내 이해는 컴파일러가 다른 어떤에서을 정의 된 함수를 호출하는 일부 다른 어디를 정의하고 선언을 가지는 것이 필요되는 함수의 선언 제공합니다 이 아닌 파일 또는 기능은입니다. 그게 맞습니까? 내가 틀린 경우에 대비하여 나를 교정 해주세요.

#include "/Users/xyz/Documents/function.h" 

희망이 도움말 :

답변

3

첫 번째 질문에 대한 답변이 없습니다. C++은 헤더 파일을 찾는 방법을 정의하지 않습니다. 컴파일러의 책임이며, 모두 다르게합니다. 대답을 원하면 컴파일러의 설명서에서 세부 정보를 찾아야합니다. 나는 모든 것을 같은 디렉토리에두고 그것에 대해 걱정하지 않기를 권한다.

질문의 두 번째 부분에서, 당신의 이해가 나에게 꽤 좋은 것처럼 보입니다.

0

당신은 주에있는 당신의 헤더 파일에 대한 정확한 경로를 포함해야합니다.

감사합니다.

0

당신은 functions.cppmain.cpp은 다음 main.cppfunctions.cpp 모두 컴파일 #include을 사용하여 functions.h을 포함한다. 그런 다음 링커는 두 개의 결과 객체 파일을 연결합니다. main.cpp에 functions.h를 포함 시키면 main.cpp 파일에서 functions.h의 함수를 호출 할 수 있습니다.

파일 경로는 컴파일러에 다음과 같은 필수 경로를 지정해야합니다. 당신이 잘해야 당신의 코드를 찾으십시오.

+0

* Psst! #include! * – Beta

+0

@ 베타 감사합니다! 그 긴 날이었다! – mathematician1975

5
#include "functions.h" 

코드는 당신이 당신의 소스 트리를 준비하기 위해 선택하는 방법에 대해 알고한다.경로를 하드 코딩하는 것은이 코드를 유지해야하는 사람 (그리고 앞으로 6 개월이 포함될 것임)에 대한 증오심을 얻는 것입니다.

빌드 시스템은 무엇이든간에 경로를 처리 할 수 ​​있습니다. 이는 다음과 같이 간단 할 수 있습니다.

g++ -I/Users/xyz/Documents -c functions.cpp 

선언/정의의 작동 방식은 기본적으로 정확합니다.

0

당신은 (일반적으로 더 바람직하다) 전체 경로

#include "/Users/xyz/Documents/function.h" 

또는 상대 경로를 사용할 수 있습니다

#include "../Documents/function.h" 

.obj 파일에 대한 전체 또는 상대 경로를 지정하는 것을 잊지 마세요 최종 실행 파일을 링크 할 때)