관리 메뉴

ComputerVision Jack

[C프로그래밍 Chapter20] 본문

Programming Language/C Programming

[C프로그래밍 Chapter20]

JackYoon 2020. 2. 17. 08:47
반응형

[선행 처리기와 매크로]

선행처리

컴파일 이전에 선행처리 과정이 존재한다.

삽입해 놓은 선행처리 명령대로 소스코드의 일부를 수정한다. (수정 : 단순 치환 의미)

  • 선행 처리 명령문은 #으로 시작한다.
  • 선행 처리기에 의해 처리되는 문장은 끝에 ; 붙이지 않는다.

#define문

#define PI 3.1415 인 경우에

#define은 지시자를 지칭한다. 지시자는 매크로를 마지막에 등장하는 매크로 몸체로 치환하라는 의미를 갖는다.

PI는 매크로(매크로 상수)에 해당하고 3.1415는 매크로 몸체를 의미한다.

 

이러한 매크로는 매개 변수가 존재하는 형태로 정의할 수 있다. (함수와 유사한 매크로)

#define SQUARE(X) X * X

하지만 사칙연산에 대해 오류가 발생하지 않게 ( ) 를 이용하여 묶어주어야 한다.

 

기본적으로 매크로는 한줄에 걸쳐서 표기한다.

 

매크로 함수의 장점

  • 매크로 함수는 일반 함수에 비해 실행 속도가 빠르다.
  • 자료형에 따라서 별도로 함수를 정의하지 않아도 된다.

매크로 함수의 단점

  • 정의하기 어렵다.
  • 디버깅하기 쉽지 않다.

[조건부 컴파일 매크로]

#if ... ... #endif

조건부 코드 삽입을 위한 지시자.

매크로가 참이냐 거짓이냐를 기준으로 동작하게 된다. 프로그램의 흐름을 나눈다.

 

#ifdef ... ... #endif

#if #endif와 비슷하지만, 매크로가 정의 되 었는지 아닌지를 기준으로 동작한다.

 

#ifndef ... ... #endif

매크로가 정의되어 있지 않다면의 의미를 기준으로 동작한다.

헤더파일의 중복 포함을 막기 위해 주로 사용된다.

 

#else

[매개변수의 결합과 문자열화]

문자열 내에서 매크로의 매개변수 치환이 발생하지 않는다.

따라서 #연산자를 사용하여 치환을 진행할 수 있다.

 

##연산자

매크로 함수의 전달인자를 다른 대상과 이어줄 때, 사용한다.

반응형

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

[C프로그래밍 Chapter19]  (0) 2020.02.12
[C프로그래밍 Chapter18]  (0) 2020.02.11
[C프로그래밍 Chapter17]  (0) 2020.02.10
[C프로그래밍 Chapter16]  (0) 2020.02.06
[C프로그래밍 Chapter15]  (0) 2020.02.05
Comments