과제물 : 두 개의 소스 파일로 구성된 프로그램을 작성하십시오. 첫 번째 (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 헤더를 통해이를 참조하지 않는 이유는 무엇입니까? 감사!
가 어떻게 연결되어있다? print.o에서 링크하는 것을 잊는 것만 큼 간단 할 수 있습니다. –
'i'가 매개 변수이기 때문에'extern'은 필요 없습니다. –
모두 감사합니다! – JZL