선행처리기
: 컴파일에 앞서 프로그램 선두에 선언된 지시자들을 미리 처리하는 역할을 수행
선행처리기의 종류
선행처리기 | 기능 |
#include | 파일 포함 |
#define | 매크로 정의 |
#if #else #elif #endif | 조건부 컴파일 |
선행처리기를 사용할 때 주의할 점
: 반드시 #로 시작해야 한다.
: 명령문 끝에는 세미콜론(;)을 붙이지 않는다.
: 한 줄에 하나의 명령만 쓴다.
: 소스 프로그램의 첫 부분에 위치한다.
#include
: 파일 포함
: #include는 C언어에서 제공되는 헤더파일(*.h)를 자신의 소스파일에 읽어 들여 함께 컴파일 하고자 할 때 사용
: C프로그램에서 표준함수인 printf(), scanf() 등을 사용하려면
이 함수들의 원형(prototype)이 선언되어 있는 표준 입출력 헤더파일인 stdio.h를 #include시켜야 함.
형식 : #include <파일명>
: #include "파일명"
예시 : #include <stdio.h>
: #include "stdio.h"
: #include "\tc\lib\math.h"
기능 : #include 다음에 제시된 파일을 현재 프로그램에 포함시킨다.
: <파일명>은 표준 디렉토리(보통 include 디렉토리)에서 파일을 찾아 포함
: "파일명"은 현재 사용 중인 디렉토리나 지정된 디렉토리에서 파일을 찾아 포함하며, 또는 드라이브나 경로를 사용
#define
: 매크로를 정의할 때 사용
*매크로
: 선행처리기 #define을 사용하여 단순 치환되는 자료
: 프로그램 작성 시에 명령이나 수식 또는 상수값이 자주 사용될 때 이들을 대표하는 이름을 붙여 사용하는 대상
*매크로 정의
-매크로 상수 정의
형식 : #define 매크로명 자료
: #undef 매크로명
예시 : #define Pl 3.141592 -> 이는 프로그램 내의 Pl는 3.141592로 치환하라는 것
기능 : 프로그램에 나요는 매크로명을 지정한 자료로 치환한 후 컴파일하거나(#define), 정의를 해제(#undef)한다.
매크로 상수 정의의 사용 예)
출력
한국방송통신대학교 주소 : 서울시 종로구 대학로 86(동숭동)
전화번호 : 1577-999520
-매크로 함수 정의
형식 : #define 매크로명(인수) (수식)
: #define 매크로명(인수, 인수) (수식)
예시 : #define AREA(x) (3.141592*(x)*(x))
: #define HAP(a, b) (a+b)
장점 : 선행처리기에 의한 단순 치환 방식이므로, 전달 인자의 자료형을 명시할 필요가 없고, 또 어떠한 자료형 변수를 인자로 전달해도 잘 동작한다.
: 한 두 줄의 코드인 경우 함수로 정의하는 것보다 속도가 빠르다.
매크로 함수 정의의 사용 예)
매크로 인수 정의시 괄호 사용 유무에 따라 결과값이 달라진다.
h1 = 10*3+4
h2 = 10*((3)+(4))
g1 = 1+2*3+4
g2 = ((1+2)*(3+4))
출력 :
h1=34, h2=70
g1=11, g2=21
#if #else #elif #endif
: 조건부 컴파일
: 조건에 따라 프로그램을 컴파일하는 명령
: 최적의 코드로 프로그램을 작성할 수 있기 때문에 시스템의 성능 향상
#if와 #elif 다음에는 컴파일 여부를 결정하는 조건문 필요
: 조건문은 선행처리과정에서 진위 여부를 판단할 수 있어야 함
: 변수 지정이나 함수 호출 부가
: 주로 매크로 값이 사용
조건부 컴파일의 사용 예)
매크로 상수 값이 1로 치환된다.
즉, CONDITION이 1이 된다. 0은 거짓을 의미하고 0 이외의 값은 참을 의미한다.
조건이 참이므로 실제 컴파일 되는 프로그램은 :
void main() {
printf("\n A 프로그램을 컴파일");
}
'방통대 > C프로그래밍' 카테고리의 다른 글
4-1 연산자 (0) | 2024.03.11 |
---|---|
3-1 표준 입출력 함수 (0) | 2024.03.04 |
2-2-2 변수 선언 (1) | 2024.02.26 |
2-2-1 자료형 (0) | 2024.02.26 |
2-1 상수와 변수 (0) | 2024.02.26 |