1 minute read

매크로와 선행처리기

  • 선행처리

    컴파일 이전에 처리되는 것

    보통 컴파일과 같이 묶어서 말함

    ”#”로 시작함

  • #define

    지시자라고 함

    매크로를 정의할 때 사용함

    #define 매크로 매크로몸체 로 정의하며 소스코드의 매크로는 매크로 몸체로 전부 치환하라는 명령을 내림

  • #define : Objct-Like macro

    매크로를 이용하여 상수를 만드는 것

    #define 매크로 상수 로 정의함

  • #define : Function-like macro

    매크로를 이용하여 함수를 만드는 것

    #define 매크로(매개변수) 함수식 으로 정의함

    매개변수는 정해지지 않은 의미의 값 또는 문자을 의미함

  • 매크로 확장

    선행처리기에 의해서 변환되는 과정 자체

  • 잘못된 매크로 정의와 괄호

    매크로 함수를 잘못 정의할 경우 치환만 되기 때문에 연산자 우선순위에 의해 연산 결과가 꼬이는 경우.

    매크로는 연산을 하고 처리하는 것이 아닌 단순히 값이 치환됨

    매크로 함수의 모든 매개변수에 괄호를 쳐주고 식 자체에도 괄호를 통해 우선권을 통해 연산이 꼬이지 않게 함.

  • 매크로 두 줄 이상 정의

    ”" 를 이용해 다음 줄 정의

  • 매크로 함수의 장점

    그냥 함수를 쓸 때에 비해 리소스를 아낄 수 있음 (함수의 메모리 할당 및 그 처리)

    자료형에 따라 별도 함수 지정하지 않아도 됨

  • 매크로 함수의 단점

    잘 못 정의할 경우 디버깅하기 힘듦

    긴 함수식은 정의하기 힘듦

  • 매크로 정의

    작은 크기의 함수

    호출의 빈도수가 높은 함수

  • 조건부 매크로

    조건에 따라 소스코드의 일부를 삽입하거나 삭제하는 것

  • 문자열 내에서의 매크로와 “#”연산자

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

    ”#”연산자를 이용하여 문자열을 치환하여 붙임

  • ”##”연산자

    필요한 형태대로 단순하게 전달인자들을 결합시킴

Categories:

Updated: