2012-05-09 5 views
-1

질문이 불충분하다면 나는 프로그래머가 아닙니다. 문맥을 벗어나면 올바른 링크로 직접 이동하십시오 ...에 포함 된 파일

헤더 파일에 "file.h"라고 쓰면 여러 함수가 선언되어 있습니다. "file.c"에서 정의를 제공하는 것 외에도 다른 방법으로 다른 .c 파일을 사용하여 헤더 파일이 file.h (모든 해당 함수가 있음)에 남아 있도록 할 수 있습니다. 코드 블록을 사용하고 있습니다.

어떤 도움이 감사합니다 ....

답변

1

을 구현했습니다.

#include "header.c" 
#include <other.h> 

: 당신이 헤더 파일이 header.h라는 제목하고 function.c뿐만 아니라 다른 라이브러리에 포함 된 기능을 포함해야 할 경우

당신은 단순히 header.h가에서 다음 을 할 필요가 여기서, other.h은 다른 기능을 포함하는 기능적 헤더 파일입니다.


N.B : 답이 부분은 OP를 제거하는 문제의 부분을 말한다.

다음 질문에 대해서는 함수 선언이 getNode과 일치하지 않는 것으로 보입니다. (void 함수로 생성되었지만 정수 매개 변수로 호출 함). 귀하의 문제를 해결하기 위해, 나는 그것을 밖으로 정렬하여 시작할 것입니다.

+0

여기 내 그림의 주 파일은 무엇입니까? – Imposter

+0

어떤 개념입니까? 당신은 두 가지 질문을했습니다 ... : P – gkiar

+0

은 main에 header.h에 diff() 함수가 있고 header.hi에 prototype을주고 header.ci에 diff() 정의가있는 header.h가 포함되어 있습니다. 더 많은 함수 프로토 타입을 header.h에 diffDiff()라고 말하면 diffDiff() 함수 정의를 diffDiff.h 파일에 넣고 싶습니다. 어떻게하면 저의 목표를 달성 할 수 있을까요 – Imposter

3

NB: this part of the answer refers to the source code the OP deleted from his question...

당신은 node에 대한 포인터를 하나의 int 인수를 복용하고 반환로 getNode을 선언합니다. 그러나 getNode은 인수를 취하지 않고 포인터를 node에 반환하는 것으로 정의합니다. 헤더 파일을 소스의 단지 덩어리 인 새로운 질문으로

node* getNode(int data) 
{ 
    node* temp=new node; 
    temp->data = data; // <- use the argument 
    temp->left=NULL; 
    temp->right==NULL; 
    temp->next==NULL; 
    return temp; 
} 

:

당신에게 하나 내가 당신의 정의를 개선하는 것, getNode의 사용량 주어진 당신의 선언이나 정의를 개선 할 필요가 전 처리기 덕분에 포함됩니다.

으로 전역 변수, 함수 및 데이터 구조를 선언 할 수 있습니다. 그러나 이러한 선언을 이해하고 나머지 응용 프로그램과 동기화되도록주의해야합니다.

+0

Qtn 1에 대한 복사 붙여 넣기 실수는 어땠습니까? 감사합니다 ... – Imposter

0

Q1 : 예, 각 기능마다 다른 구현 파일을 사용하고 연결하십시오.

실제로 이것은 별도의 컴파일 단위로 코드를 분할하는 좋은 방법입니다. 관련 코드를 쉽게 찾을 수있을뿐 아니라 일부 기능이 참조되지 않는 경우 실행 파일의 크기를 줄일 수 있습니다.

Q2 : 인수를 가지고 treelib.h에 정의 된대로는 getNode의 기능 getNode(int) 아니라 getNode()

1

당신의 정의를 정의하지 않았습니다. treelib.cpp에서 getNode를 구현 한 것은 아닙니다. 그래서 treelib.h에서 "node * getNode (int);"로 정의됩니다. 하지만 treelib.cpp에서는 "node * getNode()"로 구현했습니다. 둘은 동일하지 않습니다. 헤더의 정의와 일치하도록 treenode.cpp의 버전을 변경하면 문제가 없습니다.

1

헤더 파일은 일반적으로 구조/클래스, 상수, 함수 프로토 타입, 그런 종류의 물건을 선언하는 데 사용됩니다. 그러나 헤더 파일과 원본 파일 사이에 관계가없는이 있습니다. "소스 파일 당 하나의 헤더 파일"또는 그와 유사한 것이 없습니다.

원하는대로 코드를 분할 할 수 있습니다. file.h은 반드시 file.cpp 파일이 있어야 함을 의미하지는 않습니다. 그것은 단지 대회입니다. 문제에 관한

, 당신은 잘못 그래, 당신이 그것에 대해 이야기 here is an article, 수, 첫 번째 질문에 대해 함수 (당신이 당신의 소스 파일에 매개 변수를 누락되었습니다.)

관련 문제