27장. 모듈화 프로그래밍
모듈(module)이란 무엇인가? 모듈화 프로그래밍 27-1 프로그래밍의 모듈화 프로그램을 구성하는 구성 요소의 일부 27-1 프로그래밍의 모듈화 모듈(module)이란 무엇인가? 프로그램을 구성하는 구성 요소의 일부 관련된 데이터와 함수들이 묶여서 모듈을 형성한다. 파일 단위로 나뉘는 것이 보통 모듈화 프로그래밍 기능별로 파일을 나눠가며 프로그래밍하는 것 유지 보수성이 좋아진다.
파일의 분할 및 컴파일 27-1 프로그래밍의 모듈화 파일을 나눌지라도 완전히 독립되는 것은 아니다. 27-1 프로그래밍의 모듈화 파일의 분할 및 컴파일 파일을 나눌지라도 완전히 독립되는 것은 아니다. 파일이 나뉘어도 상호 참조가 발생할 수 있는데, 이는 전역 변수 및 전역 함수로 제한된다. 그림 27-1 그림 27-2
외부 접근 금지 링크에 대한 이해 27-1 프로그래밍의 모듈화 static 키워드에 의한 접근의 제한 27-1 프로그래밍의 모듈화 외부 접근 금지 static 키워드에 의한 접근의 제한 링크에 대한 이해 링크라는 이름이 의미하는 것처럼 연결에 관련된 작업을 한다. 선언된 함수의 정의를 찾아서 연결시켜 주는 작업 (여기서 말하는 연결이라는 용어는 다양한 의미로 사용) 그림 27-7
헤더 파일의 포함이 지니는 의미 27-2 헤더 파일의 구현과 유용성 27-2 헤더 파일의 구현과 유용성 헤더 파일의 포함이 지니는 의미 전처리기에 의해 하나의 파일을 다른 하나의 파일에 포함시키는 작업 그림 27-8
헤더 파일 포함 방법 27-2 헤더 파일의 구현과 유용성 27-2 헤더 파일의 구현과 유용성 헤더 파일 포함 방법 #include <abc.h> // 표준 디렉토리에서 abc.h를 찾아서 포함 #include “c:/include/abc.h” // c:\include에서 abc.h를 찾아서 포함 #include “plus.h” 현재 작업 디렉토리에 존재하는 plus.h를 포함하라는 의미 #include “c:/header/lib/plus.h” c:/header/lib에 존재하는 plus.h 포함
헤더 파일의 정의 방법 및 유용성 27-2 헤더 파일의 구현과 유용성 함수 및 변수의 extern 선언의 간략화 27-2 헤더 파일의 구현과 유용성 헤더 파일의 정의 방법 및 유용성 함수 및 변수의 extern 선언의 간략화 파일 변경 최소화! 예제 calculator.c, cal_main.c 참조 예제 calculator.h, calculator.c, cal_main.c 참조 그림 27-10
#if, #elif, #else, #endif 기반 조건부 컴파일 27-3 조건부 컴파일 #if, #elif, #else, #endif 기반 조건부 컴파일 hello1.h, hello2.h, hello3.h, condi_main.c 참조 #if CONDITION1 expression1 #elif CONDITION2 expression2 #else expression3 #endif
헤더 파일 포함 관계에서 발생하는 문제 27-3 조건부 컴파일 하나의 헤더 파일을 두 번 이상 포함! 27-3 조건부 컴파일 헤더 파일 포함 관계에서 발생하는 문제 하나의 헤더 파일을 두 번 이상 포함! 이는 중복해서 함수가 정의되거나, 변수가 선언되는 문제점 조건부 컴파일로 문제 해결! 그림 27-11
#ifndef, #endif 기반 조건부 컴파일 27-3 조건부 컴파일 #ifndef, #endif 기반 조건부 컴파일 그림 27-12