C언어_12
파일분할
코드의 양과 라인이 많아지면 하나의 파일에서 관리하기 힘들어 진다. 효율성을 높이기 위해 파일을 나누어 관리한다.
작게는 기능 단위, 크게는 모듈단위로 나누는데, 객체지향에서는 클래스 단위로 나눈다.
헤더파일의 사용법
#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입니다.
Author And Source
이 문제에 관하여(C언어_12), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gimmicks_/c12저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)