다른 파일 include 관련 질문
205
작성한 질문수 11
안녕하세요.
9.11 강의 17:01에서 강사님께서
"현재 상태에서 main.c 함수는 my_print_functions.c 파일에 대해서 알지 못해요"라고 설명해주시는데요.
이때 알지 못한다는 것을 compile 단계에서 알지 못한다고 이해해도 괜찮은가요?
즉, compile단계에서는 main.c 함수가 my_print_functions.c 파일을 알지 못하지만,
linking 단계에서는 linker가 두 파일을 연결해줘서 build가 정상적으로 이루어진다고 이해하면 될까요?
아래 사진처럼 my_print_functions.h 파일을 무시하고 main.c에서 my_print_functions.c 파일을 바로 include해보았는데 에러가 나옵니다. 어떤 부분에서 잘못된 것인가요?


답변 1
1
안녕하세요, 답변 도우미 Soobak 입니다.
질문 1)
: 네, 맞습니다.
컴파일 단계에서 main.c 가 my_print_functions.c 파일에 정의된 함수들에 대해 알지 못한다는 것을 의미합니다. 말씀하신 것처럼, 링킹 단계에서 링커가 두 파일을 연결하여 빌드가 정상적으로 이루어지게 됩니다.
질문 2)
: main.c 파일에서 my_print_functions.c 파일을 직접 포함시킴으로써 발생하는 중복 정의 문제로 보입니다.
에러 메세지 "multiple definition" , 즉, 여러번 정의되었다는 문제는 같은 함수가 여러 오브젝트 파일에서 발견되어 링커가 어떤 것을 사용해야 할지 모르기 때문에 발생하는 문제입니다.
첨부해주신 사진에서의 경우, my_print_functions.c 파일의 함수들이 main.c 파일 내에서 직접 포함되어 컴파일되면서, my_print_functions.c 파일 자체도 별도의 오브젝트 파일로 컴파일되어 함수 정의가 중복되게 됩니다.
보통, 이러한 중복을 방지하기 위해 함수의 선언만 포함하는 헤더 파일을 사용합니다.
Export template 안됨
1
17
2
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
54
3
main 함수에서 왜 int만 선언이 되는걸까요
1
56
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
54
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
49
1
프로토타입과 함수간의 인자 불일치
1
73
2
12.12 헤더 관련 질문
1
60
2
Visual Studio Community 2026 사용 문의
1
137
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
61
2
getchar(), putchar()
1
93
3
강의자리ㅛ
1
79
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
113
2
소스파일안에 여러 파일
1
75
2
F5와 F7의 차이
1
76
2
c = TWO * (a+b); 에서 a와 b는?
1
58
2
; 세미콜론을 붙이는 기준에 문의
1
68
1
Step over 기능 문의
1
53
2
2.6 강의 따옴표 출력 규칙 문의
1
74
2
int main 함수 관련 오류 문의
1
67
2
13.4 words[0]
0
60
2
11.7 함수를 구현해 봤습니다.
1
62
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
64
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
53
2
11.6 fit_str함수를 구현해 봤습니다.
1
53
2





