[C언어] 전처리기

3074 단어 c언어CC

1. 파일 포함 전처리기

  • #include는 전처리기에서 가장 많이 사용되는 문법
  • 특정한파일을 라이브러리로서 포함시키기 위해 사용
  • #include 구문으로 가져 올 수 있는 파일에는 제약이 없다.

#include<파일 이름>

  • 시스템 디렉토리에서 파일을 검색
  • 운영체제마다 시스템 디렉토리가 존재하는 경로가 다를 수 있음
  • 대표적으로 stdio.h와 같은 헤더 파일들이 시스템 디렉토리에 존재

C언어 컴파일러를 구축하게 되면 <stdio.h>, <stdlib.h> 등 다양한 라이브러리들이 우리의 컴퓨터 내의 시스템 디렉토리에 포함이 되는데 거기에서 파일을 검색해서 프로그램상에 띄워준다.


#include"파일 이름"

  • 현재 폴더에서 파일을 먼저 검색
  • 만약 현재 폴더에 파일이 없다면 시스템 디렉토리에서 파일을 검색

2. 메크로 전처리기

  • 프로그램 내에서 사용되는 상수나 함수를 매크로 형태로 저장하기 위해 사용
  • #define 문법을 사용해 정의할 수 있음
  • #define 문법은 소스코드의 양을 획기적으로 줄이는 데 도움
#define PI 3.1415926535

int main(void) {
	int r = 10; // 원의 반지름
	printf("원의 둘레: %.2f\n", 2 * PI * r);
	system("pause");
	return 0;
}


#define POW(x) (x * x)

int main(void) {
	int x = 10;
	printf("x의 제곱: %d\n", POW(x));
	system("pause");
	return 0;
}


  • 인자를 가지는 매크로 전처리기
#define ll long long
#define ld long double

int main(void) {
	ll a = 23465390234;
	ld b = 134.5939;
	printf("%.1f\n", a * b);
	system("pause");
	return 0;
}


3. 조건부 컴파일

  • #ifndef (if not define)
  • #endif (end if)
#ifndef _TEMP_H_
#define _TEMP_H_

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

#endif

#ifndef로 헤더파일 정의 시
⬇ 아래와 같이 헤더파일이 중복되어 include되더라도 정상 작동됨

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h> 
#include "temp.h"
#include "temp.h"

int main(void) {
	printf("%d\n", add(5, 3));
	system("pause");
	return 0;
}


4. 파일 분할 컴파일

main.c C언어 파일

#include <stdio.h> 
#include "temp.h"

int main(void) {
	printf("%d\n", add(50, 30));
	system("pause");
	return 0;
}

temp.h 헤더파일
: 함수에 대한 정의만

#ifndef _TEMP_H_
#define _TEMP_H_

int add(int a, int b);

#endif

temp.c C언어 파일
: temp.h 파일 정의

#include "temp.h"

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

좋은 웹페이지 즐겨찾기