티스토리 뷰

전처리기

 

-전처리기란 컴파일러가 소스 파일을 컴파일 하기 전에 사용자가 지시한 작업을 먼저 처리하는 것 이다.

 

전처리기의 특징

 

-C 언어는 전처리기를 사용하여 그 능력과 표기법을 확장한다.

-#으로 시작하는 행을 전처리 지시자라고함ex) #include.. #define.. #if..

-전통적인 C에서는 첫 번째 열에 #이 와야 한다.

-전처리기는 C를 알지 못한다.

-세미콜론; 이 없다.

-파일 처리를 위한 전처리기 문 : #include

-형태 정의를 위하 전처리기 문 : #define, #undef

-조건 처리를 위한 전처리기 문 : #if, #ifdef, #else, #elif, #edif

-컴파일 옵션 처리를 위한 전처리기 문: #pragma

 

 

#include <파일이름>

미리 정의된 include 폴더에서 파일을 찾는다.

#include "파일이름"

현재의 소스 코드가 저장되어 있는 폴더에서 먼저 찾고,

파일이 없다면 미리 정의된 include 폴더에서 파일을 찾는다.

#error

컴파일러 오류 메시지를 발생

#import

파일을 추가한다.

#elif

Else if

#else

Else

#ifndef

식별자가 정의되어 있지 않으면 참

#ifdef

식별자가 정의되어 있으면 참

#endif

#findef#ifdef, #else에 대한 전처리기 부분을 종료

#line

 

내부 행 넘버를 변경한다.

#undef

식별자를 정의하지 않는다.

#progma

링크할 때 헤더 파일이 한 번만 포함되게 한다

 

 


#include


-파일 포함하기 이다.

-서로 다른 함수의 함수나 기타를 활용하기 위해 함수형이나 변수형이나 선언 내용을 다른 파일 끼리 연결하는 방식이 필요하다. 이때 #include을 사용한다.

-#include에 명시되는 파일의 내용은 제한이 없다.

-전처리기에 의해 다시 확장되어야 하는 또 다른 전처리 지시자를 포함할 수 있다.

 

)

#include <stdio.h>

 

int main(void)

{

    printf("Hello, world!\n");

    return 0;

}


printf함수가 stdio.h 파일에 정의되어 있다. 따라서 printf함수의 모양을 알 수 있다. 만약 함수의 모양을 모른다면 호출이 불가능해진다.

 

#define


-#define은 특성 숫자, 함수, 프로그램 블록을 다른 형태로 변환 지정한다. (간단하게 치환)

-다양한 선언이 가능하다.

-조건은 선언 된 그 줄에 만 적용된다.

-정의 내용을 해제하려면 #undef을 사용하면 정의 된 것이 없었던 것이 된다.

 

#if


-바로 뒤에 상수 또는 이미 정의된 문자 상수가 온다. 평가 값이 0 이면 다음줄 부터의 내용을 건너 뛰고, 평가 값이 0 이 아니라면 처리한다.

 

#ifdef


-#if와 마찬가지로, 단지 뒤에 나오는 식별자가 #define으로 정의가 되어있으면 처리 하고, 그렇지 않으면 건너 뛴다.

 

#if defined


-if defined에서 defined 는따라 오는 식별자가 정의 되어있으면 1 그렇지 않으면 0 으로 평가 한다.

 

#ifndef


-if not defined 이다,

 


 

#else, #elif


-전처리기의 조건부 컴파일은, if문의 else와 유사하게 #else를 가지고 있고, else if와 유사하게 #elif를 가지고 있다. 방식도 유사하다고 한다.

 

#endif


-조건부 컴파일의 종료를 나타낸다.

 

 

#pragma


-컴파일러에게 특성 옵션이나 라이브러 형태등을 지정할 수 있다.

-다양하므로 한마디로 정의 할 수 없다.

-여러가지 환경에 적응할 수 있도록 컴파일러 마다 그리고 CPU 및 시스템 특성에 맞는 것들이 추가되거나 삭제된다.

 

헤더파일


-헤더파일이란, C언어 코드를 작성할 때 코드의 맨 위에 적고 문법을 사용하기 위해 참조하는 것이다

 

 

헤더파일 특징

 

-헤더파일 안에는 라이브러리 함수라는 것이 들어 있다.

-라이브러리 함수란 프로그래머가 쉽게 이용할 수 있도록 미리 만들어 놓은 다양한 기능들의 함수를 말한다.

-라이브러리 함수를 이용하기 위해서는 해당함수의 원형과 함수 정의가 포함되어 있는 헤더파일을 불러와야만 사용할 수 있다.

-예를 들어 #include <stdio.h> 이 헤더파일에서는 printfscanf등 일반적으로 써야되는 문법들을 사용 할 수 있게 해준다.

 

 

자주 사용 되는 헤더 파일의 종류들

 

1. stdio.h

기능: 표준 입출력

함수: printf, scanf, if, for, while 등 기본적인 함수들.

 

2. stdlib.h

기능: 메모리 관리와 유용한 함수

함수: rand, malloc, exit


 

3. string.h

기능: 문자열 처리

함수: strcpy, strlen

 

4.time.h

기능 : 날짜와 시간

함수 : time, asctime

 

5. math.h

기능 : 수학, 수치계산

함수 : sin, lig, sqrt

 

6. ctype.h

기능 : 문자처리(판단, 변환)

함수 : isapha, tolower

 

이 외에도 많은 헤더 파일이 있다.

 

 

헤더파일 사용법

-#include <헤더파일 이름>을 코드 맨위에 적어두면 실행 시 적용 된다.

 

헤더파일 사용 예

 

-대표적으로 C언어에서 많이 사용하는 printf함수는 stdio.h 표준 라이브러리에 존재한다.

 

#include <stdio.h>

 

int main()

{

printf("출력 함수 사용 예\n");

 

return 0;

}

 

-여기서 실시간 라이브러리 함수 printf 코드는 라이브러리 파일에 존재하고, stdio.h 헤더 파일에 형이 선언 되어 있다.

 

 

 

Comments