2012-10-12 4 views
1

과제물 : 두 개의 소스 파일로 구성된 프로그램을 작성하십시오. 첫 번째 (Main.c)는 main() 함수를 포함하고 변수 i에 값을 제공합니다. 두 번째 소스 파일 (Print.c)은 i에 2를 곱해서 인쇄합니다. Print.c는 main()에서 호출 할 수있는 print() 함수를 포함합니다. MAIN.CPP'print (int)'에 대한 정의되지 않은 참조 [링커 오류]

#include <stdio.h> 
#include "print.h" 
using namespace std; 

// Ex 1-5-3 

// Global variable 
int i = 2; 


int main() { 
    print(i); 

    return 0; 
} 

print.cpp :

#include <stdio.h> 
#include "print.h" 
using namespace std; 

// Ex 1-5-3 

// Fetch global variable from main.cpp 
extern int i; 

void print(int i) { 
    printf("%d", 2*i); 
} 

print.h :

#ifndef GLOBAL_H // head guards 
#define GLOBAL_H 

void print(int i); 

#endif 

이 할당을 할 내 시도에서

, 나는 세 개의 파일을 생성 print.cpp를 컴파일하고 main.cpp을 컴파일하고 실행하려고하면 다음과 같이 표시됩니다. [L inker error] 'print (int)'에 대한 정의되지 않은 참조

print.cpp에서 void print (int i)에 대한 정의를 수락하지 않고 print.h 헤더를 통해이를 참조하지 않는 이유는 무엇입니까? 감사!

+1

가 어떻게 연결되어있다? print.o에서 링크하는 것을 잊는 것만 큼 간단 할 수 있습니다. –

+1

'i'가 매개 변수이기 때문에'extern'은 필요 없습니다. –

+0

모두 감사합니다! – JZL

답변

2

확실하지 당신이 사용하고있는,하지만 난 리눅스/GCC에서 작동하도록 그것을 가지고 무엇을 컴파일러 :

$ gcc main.cpp print.cpp -o test 
$ ./test 
$ 4 
$ 
관련 문제