소스 파일
Coddy C 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 61개 중 3번째.
지금까지는 헤더 파일에 function 선언을 배치했지만, 실제 function 코드(정의)는 main 파일에 있었습니다. 모듈식 프로그래밍의 다음 단계는 이러한 정의를 별도의 소스 파일(.c 파일)로 옮기는 것입니다.
이는 깔끔한 세 부분 구조를 만듭니다: header는 function을 선언하고, 별도의 소스 file은 이를 정의하며, main은 단순히 이를 사용합니다. 다음과 같습니다:
// math_utils.h
#ifndef MATH_UTILS_H
#define MATH_UTILS_H
int add(int a, int b);
#endif
// math_utils.c
#include "math_utils.h"
int add(int a, int b) {
return a + b;
}
// main.c
#include <stdio.h>
#include "math_utils.h"
int main() {
printf("%d\n", add(5, 3));
return 0;
}
math_utils.c가 자체 header를 포함한다는 점에 주목하세요. 이렇게 하면 function 정의가 선언과 일치하는지 확인할 수 있으며, 일치하지 않으면 컴파일러가 오류를 감지합니다. main 파일은 해당 function을 사용하기 위해 header만 include하면 되며, add가 내부적으로 어떻게 작동하는지는 알 필요가 없습니다.
이러한 분리는 구현 세부 정보를 숨기고, 해당 함수 로직을 사용하는 파일을 건드리지 않고도 함수 로직을 수정할 수 있게 합니다.
챌린지
쉬움코드를 적절한 세 파일 구조로 구성하여 간단한 수학 유틸리티를 만들어 봅시다. 선언을 위한 헤더, 구현을 위한 소스 파일, 그리고 이를 사용하는 main 파일로 구성합니다.
세 개의 파일을 만듭니다:
math_ops.h:multiply와subtract라는 두 연산의 function 선언을 포함하는 헤더 파일입니다. 두 function 모두 두 개의 정수를 받고 정수를 반환합니다.MATH_OPS_H기호를 사용하여 include guards를 정의하는 것을 잊지 마세요.math_ops.c:multiply와subtract의 실제 구현을 포함하는 소스 파일입니다. 선언과 정의가 일치하도록 이 파일의 자체 헤더를 include해야 합니다.main.c: 헤더를 include하고 두 function을 모두 사용하여 계산을 수행하는 main 파일입니다.
multiply function은 두 정수의 곱을 반환하고, subtract는 첫 번째 정수에서 두 번째 정수를 뺀 값을 반환해야 합니다.
두 개의 정수 입력인 a와 b를 받습니다.
main function에서 두 연산의 results를 각각 별도의 줄에 출력합니다:
Product: {result of multiply}
Difference: {result of subtract}예를 들어 입력이 8과 3이면 출력은 다음과 같습니다:
Product: 24
Difference: 5직접 해보기
#include <stdio.h>
#include "math_ops.h"
int main() {
int a, b;
scanf("%d", &a);
scanf("%d", &b);
// TODO: multiply 함수를 a와 b로 호출하고 결과를 저장하세요
// TODO: subtract 함수를 a와 b로 호출하고 결과를 저장하세요
// TODO: 다음 형식으로 결과를 출력하세요:
// 곱: {result of multiply}
// 차: {result of subtract}
return 0;
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 C 컴파일러