#define, #include 등 C/C++ 에서 사용되는 #으로 시작되는 것들은 전처리기 명령어 혹은 전처리기 지시문(preprocessing directives)라 한다.

전처리기 명령어를 통해 컴파일 과정을 Control 할 수 있다.

전처리기 명령어는 반드시 독립된 Line 의 시작에 위치해야 한다.


#include

일반적으로 가장 많이 쓰이는 전처리기 명령어인 #include는 헤더파일을 포함시키기 위해 사용된다.

#include <stdio.h>

#include "my_header.h"

* 꺾쇠(<>)로 묶인 header 파일은 일반적인 header 파일 디렉토리에 있는 헤더파일, 큰따옴표("")로 묶인 header 파일은 사용자 지정 경로에 있는 헤더파일


#define

#define 은 자주 쓰이는 숫자를 문자로 정의하여, 다른 사람들이 알아보기 쉽게 만들어 주는 역할을 한다. 

#define PI 3.14

* #undef 로 정의 한 것을 풀어 줄 수 있음


#ifdef / #ifndef / #endif 등을 함께 활용하여, 컴파일 시 조건을 변경하기 용이하게 코드를 작성하기도 한다.

일반적으로, 헤더파일의 시작과 끝에 작성하여, 헤더파일을 여러곳에서 포함(include)시키더라도, 헤더파일을 중복으로 참조 방지(include guard / macro guard / header guard)의 방법으로 사용된다.

/****header file name is A.h******/

#ifndef A_H_

#define A_H_

// header file contents

#endif


#define 을 이용하여 매크로 함수를 만들 수 있다.

#define SQUARE(x) x*x



#if / #elif / #else / #endif

#if / #elif / #else / #endif 를 통해 compile 의 조건을 Control 한다.


#pragma

#pragma 는 전처리기 명령어를 정의하는 전처리기 명령어 이다. 

일반적으로, 아래와 같이 once 라는 전처리기 명령어를 정의해 헤더파일 중복 참조를 방지한다.

/*****header file *****/

#pragma once

// header file contents

* 위의 #ifndef / #define / #endif 를 이용해 헤더파일 중복 참조를 방지 한 것과 같은 역할을 함.

* pragma 를 support 하지 않는 compiler의 경우 무시됨

'Programming > C Language' 카테고리의 다른 글

static  (0) 2018.07.13
가변 인자(variable arguments) stdarg.h  (0) 2017.12.11
extern  (0) 2017.06.21
static  (0) 2017.06.20
Floating Point Bit 출력 방법  (0) 2017.06.08

+ Recent posts