본문 바로가기
개발/C++

매크로(Macro)

by 남생이야 2024. 6. 7.

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