12
24
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
COMMENT