C++에는 매크로라 불리는 문법이 존재한다.
선언은 #으로 시작하여 특정한 키워드를 작성하며 ex) #define
이후에 나오는 값을 따로 처리하는 등에 지시를 사전에 처리할 수 있게 한다.
매크로는 컴파일러 전에 '전처리기'로부터 이를 먼저 처리하고 컴파일러가 이를 바탕으로 해당 매크로문을 작성한 곳을 사전에 작성한 내용으로 변환시켜 컴파일한다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define PI 3.14159268
#define MUL(x, y) (x) * (y)
#define TRUE rand() % 2 // 허용하면 안되는 매크로다..
typedef unsigned char BYTE; // 이것도 전처리기에서 처리함
typedef unsigned long ULONG;
int main()
{
float radian = PI * 2.0f;
printf("radian : %f \n", radian);
int value = MUL(2 + 3, 4 + 5);
printf("value: %d \n", value);
srand(time(0));
printf("TRUE = %d\n", TRUE);
printf("TRUE = %d\n", TRUE);
printf("TRUE = %d\n", TRUE);
printf("TRUE = %d\n", TRUE);
printf("TRUE = %d\n", TRUE);
printf("TRUE = %d\n", TRUE);
BYTE red = 0xFF;
printf("red = %X\n", red);
ULONG color = 0xFF00FFFF;
printf("color = %X\n", color);
return 0;
}
매크로 상수
특정한 값을 상수로 지정하여 사용할 수 있다.
매크로 함수
간단한 함수 내용을 매크로 함수로 처리하여 작업할 수 있다. 단, 타입 안전성등이 부족하다는 특징이 있다.
'개발 > C++' 카테고리의 다른 글
가상 기초 클래스( virtual based class) (0) | 2024.06.28 |
---|---|
이름 공간(namespace) (0) | 2024.06.15 |
인라인(Inline) 함수 (2) | 2024.06.11 |
동적 캐스팅(dynamic_cast) (0) | 2024.06.07 |
가상 함수 (2) | 2024.06.03 |