매크로 - C/C++의 독특한 매력
1) 전처리기 '#'

2) #define ...

예제 코드)
#include "Header.h"
#define SWAP(X, Y, T) T = X; X = Y; Y = T
int main() {
int v1 = 100;
int v2 = 200;
int temp;
SWAP(v1, v2, temp);
printf("v1 : %d\n", v1);
printf("v2 : %d\n", v2);
printf("temp : %d\n", temp);
return 0;
}
tip) 소스코드를 두줄로 할때는 \를 한 후에 한칸 띄워서 작성한다. (역슬레시 이후엔 공백(스페이스)도 있으면 안된다.)
3) #include ...
4) 매크로 함수

5) 매크로 상수

예제코드)
#include "Header.h"
#define PI 3.141592
int main() {
float pi = PI;
return 0;
}
6) #if #elif #else #endif

예제코드)
#include "Header.h"
#define PI 3.141592
#define EXECUTE_NUM 1
#if EXECUTE_NUM == 0
int main() {
printf("Hello World 0");
return 0;
}
#else
int main() {
printf("Hello World 1");
return 0;
}
#endif
7) #ifdef #else #endif

예제코드
#include "Header.h"
#define PI 3.141592
#define EXECUTE_NUM
#ifdef EXECUTE_NUM == 0
int main() {
printf("Hello World 0");
return 0;
}
#else
int main() {
printf("Hello World 1");
return 0;
}
#endif
과제형 문제)

sol)
#include "Header.h"
#define SWAP(X, Y, TYPE) {TYPE temp = v1; v1 = v2; v2 = temp; }
int main() {
int v1 = 100;
int v2 = 200;
SWAP(v1, v2, int);
SWAP(v1, v2, int);
printf("v1 = %d \n", v1);
printf("v2 = %d \n", v2);
return 0;
}
// 매크로 함수를 두번 이상 사용할 때 브라켓({})으로 범위를 지정해줘야한다.