#define -> 매크로를 정의
#inclube -> 헤더 파일을 포함
#if,#else,#endif -> 조건에 따라 컴파일
#ifdef -> 매크로가 정의된 경우에 컴파일
#ifndef -> 매크로가 정의되지 않는 경우에 컴파일
2. 매크로상수
소스파일에서 매크로 상수가 사용된 곳을 모두 찾아서 정의된 문자열로 대치해줌
# define 매크로명 함수명(인자1, 인자2) 대치할 내용
매크로 함수는 함수인 것처롬 보이지만 사실은 함수가 아님
컴파일 시에 인자에 데이터형 검사를 수행하지 않으며,인자를 매개변수로 전달하는 함수 호출과정이 수행되지않음
매크로 함수 사용시 문자열 대치 과정에서 잘못된 결과가 만들어질 수도 있음
# define 매크로명 값
3. 매크로 함수
장점 : 매크로 함수를 사용하면 프로그램의 실행 속도가 빨라짐
단점 : 매크로 함수를 많이 사용하는 프로그램은 프로그램의 크기가 커짐, 알아보기 어려워짐
4. 예약 매크로
__DATA__ -> 최근에 컴파일한 날짜
__FILE__ -> 소스 파일의 이름을 절대 경로와 함께함
__LINE__ -> 소스 파일에서 해당 문장이 있는 줄번호
__TIME__ -> 최근에 컴파일한 시각
__TIMESTAMP__ -> 소스파일을 수정한 시각
#조건부 컴파일
1. #if, #else, #endif
특정 조건이 만족할때만 코드를 컴파일함
상황에 따라서 특정 코드를 컴파일하게 또는 컴파일 하지않게 만들수있음
이식성 있는 코드를 개발할때 유용
#if 조건식
문장
#endif
#if의 조건식에는 매크로를 정수와 비교하는 관계 연산자가 주로 사용되고, 산술 연산자, 논리 연사자 등이 사용될 수 있음
#if의 조건식에서 매크로를 실수나 문자열과 비교할 수 없음
#if에는 반드시 짝이 되는 #endif가 필요하며, #else를 함께 사용할 수도 있음
#if, #endif에서는 컴파일할 문자이 여러개여도 {}로 묶어줄 필요가 없음
#if 안에 따른 #if를 중첩해서 사용할 수 있으며, 각각의 #if마다 #endif가 하나씩 짝을 이루어야함
2. #ifdef
if defined라는 의미
#ifdef는 특정 매크로의 정의 여부에 따라 #ifdef와 #endif사이의 문장을 컴파일 할지 결정
DEBUG 매크로 정의 시에만 함수 정보를 출력하는 경우
출력문에 수행되려면 정의 시에만 함수 정보를 출력하는 경우