데굴데굴이
데굴이의 개발일지
데굴데굴이
전체 방문자
오늘
어제
  • 분류 전체보기
    • 프로그래밍
      • C,C++
      • C#
      • 백준(BOJ)
      • 알고리즘
      • HTML
      • WinAPI
      • ETC
    • 유니티
      • 쉐이더
    • 컴퓨터 구조
    • 일본어

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 정적 라이브러리 만들기
  • 평가 순서
  • 25644번
  • 동적 라이브러리 적용
  • 동적 라이브러리 만들기
  • 10811번
  • 1032번#
  • 바구니 뒤집기
  • msvc++
  • 25644
  • BOJ
  • 최대 상승
  • 재귀함수가 뭔가요?
  • multable
  • 1343번
  • c++
  • C
  • 1158번
  • 정적 라이브러리
  • 알고리즘
  • 전처리
  • 라이브러리 적용
  • 10811
  • Sequence Point
  • 동적 라이브러리
  • C언어
  • 시퀀스 포인트
  • 백준
  • 컴파일
  • 라이브러리

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
데굴데굴이

데굴이의 개발일지

프로그래밍/ETC

파일 분할

2022. 12. 28. 21:11
반응형

글을 읽기전 파일 분할에 대해 알기 위해선 전처리기에 대해 알아야 합니다.

 

관련글은 아래 링크를 참고해주세요 .

https://gamedeveloper-programming.tistory.com/3
 

빌드 과정 [Build Process]

Bulid 란 ? 빌드(Build)란 여러 소스코드 파일들을 기계어로 변환 후 실행 파일 혹은 라이브러리로 만드는 과정을 의미합니다. 컴퓨터는 0 과 1밖에 모르기 떄문에 우리가 작성하는 코드들을 바로 컴

gamedeveloper-programming.tistory.com

 

파일 분할을 하는 이유

파일 분할은 필수적인 요소는 아닙니다. 

하지만, 10줄, 100줄 까지는 읽을 수는 있어도 만약 10만줄, 100만줄이 넘어간다면 어떤 함수로 가서 수정을 위해서면 하루의 절반은 스크롤을 내리는데 써야 할수도 있습니다.

 

가독성과, 유지 보수에 파일 분할은 중요한 프로그래머의 필수 항목 중 하나 입니다.

헤더 파일

1. 헤더 파일이란 ?

  • 일반적으로 C/C++ 언어 에서는 명령어 및 함수를 정의하고 있는 파일 입니다.

2. 헤더 파일을 사용해야 하는 이유.

  • 자주 사용하는 함수들의 프로토 타입을 하나의 헤더 파일에 저장
  • 미리 선언해 둬서 여러 소스 코드들이 공유 할수 있게하여 모듈을 유지 보수, 재활용에 용이하다.
  • 파일 하나를 길게 코딩하면 복잡한 프로그램을 제작할 때 힘들다.

3. 헤더 파일을 만들 때,  주의 할 점.

정의를 헤더 파일 안에서 하면 안된다. 

헤더는 '선언' 을 위해 존재하는 파일이기 때문에 정의를 넣는다고 실행이 안되진 않지만 그렇게 되면 헤더 파일을 쓰는 의미가 없어지는 것이다.

4. 헤더 파일의 구성

헤더 파일은 #ifndef / #define / #endif 로 감싸져 있습니다.

헤더 파일의 시작은 #ifndef [헤더 구분자] 로 시작하여 #endif 로 끝이 납니다.

#ifndef [헤더 구분자] 바로 다음에는 #define 문을 위치시킵니다.

헤더 파일에 #ifndef / #endif / #define 을 사용하는 이유

위에 전처리기를 사용하는 이유는 다수의 소스코드에서 include된 헤더 파일이 여러번 포함되는 것을 막기 위한 조치이다.

#ifndef 이하의 있는 선언들을 없을 경우 포함시키며, 만일 존재하는 경우, 이미 헤더 파일이 불러진 상태이므로 무시한다는 뜻입니다.

실수로 헤더 파일이 여러번 include등의 오류를 피하여 다음과 같은 방법을 사용합니다.

이것을 'Header Haurd' 라고 부릅니다.

파일 분할

아래 소스 코드가 있다고 하자.

간단한 사칙연산 계산을 하는 코드이다. 

먼저 #include 를 하여 필요한 헤더파일을 가져오고

 

사용할 함수들을 전방선언을 하였다.

 

실제 함수 구현은 int main(void) 아래에 

구현부를 작성을 하였다.

 

이 코드를 3개의 파일로 분리 할수 있다.

 

my_math.h
my_math.c
main.c

위 소스 코드와 같이 헤더 파일에는 선언 하는 코드만 넣었고 my_math.c 코드에는 선언한 코드들의 정의를 적었습니다. 그리고 실행되는 main.c 파일은 그저 '선언' 된 함수들을 호출하기만 하면 사용을 할수있게 되었습니다.

 

이렇게 파일 분할을 해놓은다면 나중에 코드가 10만줄 100만줄 늘어난다해도 그저 my_math.c, my_math.h 에 들어가기만 하면 쉽게 수정을 할수 있는 것입니다.

 

마무리

파일 분할은 익혀둔다면 도움이 엄청 된다고 생각합니다.

파일 분할을 배울때 전처리기에 대해 어느정도 알고있어야 이해할수있는 부분이 있어서 알아야할게 어느정도 있어야할것같습니다.

 

여기까지 부족한 글을 읽어주셔서 감사합니다.

    

 

반응형

'프로그래밍 > ETC' 카테고리의 다른 글

컴파일러 종류 [ Compiler ]  (0) 2022.12.31
라이브러리 [ Library ]  (0) 2022.12.29
빌드 과정 [Build Process]  (0) 2022.12.28
    '프로그래밍/ETC' 카테고리의 다른 글
    • 컴파일러 종류 [ Compiler ]
    • 라이브러리 [ Library ]
    • 빌드 과정 [Build Process]
    데굴데굴이
    데굴데굴이

    티스토리툴바