728x90
1. 전처리기
컴파일러가 소스 파일을 컴파일하기 전에 먼저 수행되는 프로그램
1) 프로그래머가 작성한 소스 파일이 컴파일 될 수 있도록 준비함 |
2) 전처리기 문장은 '#'으로 시작 |
![]() |
전처리기 문장 | 기능 |
#define | 매크로를 정의 |
#include | 헤더 파일을 포함 |
#if, #else, #endif | 조건에 따라 컴파일 |
#ifdef | 매크로가 정의된 경우에 컴파일 |
#ifndef | 매크로가 정의되지 않는 경우에 컴파일 |
2. 매크로 상수
형식 : #define 매크로명 값
전처리기 : 소스 파일에서 매크로 상수가 사용된 곳을 모두 찾아서 정의된 문자열로 대치
3. 매크로 함수
1) 매크로 함수는 함수처럼 인자를 갖는 매크로 |
2) 매크로 상수처럼 매크로 함수가 사용되는 곳에 문자열 대치를 통해서 코드를 확장함 |
형식 : #define 매크로 함수명(인자1, 인자2, ...) 대치할 내용
3) 매크로 함수는 함수인 것처럼 보이지만 사실은 함수가 아님 |
4) 컴파일 시에 인자의 데이터형 검사를 수행하지 않으며, 인자를 매개변수로 전달하는 함수 호출 과정이 수행되지 않음 |
5) 매크로 함수 사용 시 문자열 대치 과정에서 잘못된 결과가 만들어질 수 도 있음 |
![]() |
![]() |
매크로 함수의 장점 | 매크로 함수의 단점 |
매크로 함수를 사용하면 프로그램의 실행 속도가 빨라짐 | 매크로 함수를 많이 사용하는 프로그램은 프로그램의 크기가 커짐 |
- 매크로 함수를 사용할 때는 함수 호출이 일어나지 않으므로 함수 호출의 오버헤드를 줄일 수 있음 | - 일반 함수 코드는 한 번만 컴파일해서 만들어 두고, 함수 코드를 필요할 때마다 반복해서 호출함 |
- 매크로 함수는 사용되는 곳마다 매크로 함수를 확장한 코드가 복사됨 | |
매크로 함수를 사용하면, 코드가 알아보기 어려워짐 |
4. 예약 매크로
매크로 | 설명 |
__DATE__ | 최근에 컴파일한 날짜 |
__FILE__ | 소스파일의 이름을 절대경로와 함께함 |
__LINE__ | 소스파일에서 해당 문장이 있는 줄 번호 |
__TIME__ | 최근에 컴파일한 시각 |
__TIMESTAMP__ | 소스파일을 수정한 시각 |
728x90
'프로그래밍 언어 > C언어' 카테고리의 다른 글
애플리케이션 최적화 (0) | 2021.12.28 |
---|---|
조건부 컴파일 (0) | 2021.12.24 |
고급 포인터 배열 기술 (0) | 2021.12.24 |
포인터 배열 기초 (0) | 2021.12.24 |
스토리지 클래스 (정적변수) (0) | 2021.12.24 |