C언어_12

gimmicks_u·2022년 3월 31일
0

C언어

목록 보기
12/13
post-thumbnail

파일분할

코드의 양과 라인이 많아지면 하나의 파일에서 관리하기 힘들어 진다. 효율성을 높이기 위해 파일을 나누어 관리한다.

작게는 기능 단위, 크게는 모듈단위로 나누는데, 객체지향에서는 클래스 단위로 나눈다.

헤더파일의 사용법

  • #include <헤더 파일 이름> : 헤더 파일을 컴파일러에서 설정한 경로에서 찾는다
  • #include "헤더 파일 이름" : 현재 작업경로에서 찾고, 없는 경우 컴파일러 설정 경로에서 찾는다.
  • #include "c:\" : 절대경로
//main.c
#include <stdio.h>
#include "add.h"

int Add(int a, int b);

int main(void)
{
    int result;
    result = Add(2, 3);
    printf("두 수의 합 : %d\n", result);
    return 0;
}

//add.h (같은 경로 내)
int Add(int a, int b)
{
    return a+b;
}
두 수의 합 : 5

헤더파일 사용상 특징 및 규칙

  • 표준 헤더파일 "stdio.h"와 사용자 정의 파일 "stdio.h"을 정의했다면, 사용자 정의파일만 적용된다.
  • 헤더파일 선언 시 대소문자 구분하지 않는다.
  • 경로 구분 시 /을 사용한다.
  • 가급적 절대 경로를 사용하지 않는다.

헤더파일과 프로토타입

// main.c
#include <stdio.h>
#include "header.h"

int main(void)
{
    int result;
    result = Add(2, 3);
    printf("두 수의 합 : %d\n", result);
    return 0;
}

int Add(int a, int b)
{
    return a+b;
}

//header.h
#pragma once

extern int Add(int a, int b);

함수의 프로토타입을 보통 헤더파일에 저장하여 사용한다.

조건부 컴파일

조건에 따라 컴파일을 할 것인지 말 것인지 결정하는 것으로, 소스코드 내에서 특정 영역을 지정하여 컴파일 유무를 결정한다.

#include <stdio.h>
#define DEBUG 1 // DEBUG가 정의되어 있다.(true)

int main(void)
{
#if DEBUG
    printf("디버그 모드로 동작합니다.\n");
#else
    printf("릴리즈 모드로 동작합니다.\n");
#endif
    return 0;
}

DEBUG가 정의되어있기 때문에, #if DEBUG 이하문이 작동하고, #else 이하문은 작동하지 않는다.

내장 매크로

  • __DATE__ : 현재 날짜
  • __TIME__ : 현재 시간
  • __LINE__ : 라인 번호
  • __FILE__ : 파일의 이름

내장 매크로는 코드 디버깅에 유용하다

#include <stdio.h>

int main(void)
{
    printf("현재 날짜는 %s입니다.\n", __DATE__);
    printf("현재 시간은 %s입니다.\n", __TIME__);
    printf("소스 파일은 %s입니다.\n", __FILE__);
    printf("현재 라인번호는 %d입니다.\n", __LINE__);
}
현재 날짜는 Mar 29 2022입니다.
현재 시간은 12:00:24입니다.
소스 파일은 main.c입니다.
현재 라인번호는 26입니다.
profile
Done is better than perfect

0개의 댓글