제10장 전처리기 문봉근.

Slides:



Advertisements
Similar presentations
C 언어 컴퓨터학과 C 언어 ( STS ) (Chap5. Selection-Making Decisions ) C 언어.
Advertisements

제6장 조건문.
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
2007 1학기 12 배열.
슬라이드 1~21까지는 각자 복습! 슬라이드 22부터는 수업시간에 복습
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.
C 프로그래밍.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express Slide 1 (of 26)
제5장 제어명령
C언어: 배열 (Arrays).
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
6장. printf와 scanf 함수에 대한 고찰
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
-Part3- 제5장 전처리기와 파일 분할 컴파일
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
C 7장. 배열과 문자열 #include <stdio.h> int main(void) { int num;
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
Chapter 4 – 연 산 자 Outline 4.1 산술 연산자 4.2 관계 연산자 4.3 동등 연산자 4.4 논리 연산자
제15장 전처리 및 비트연산.
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
C언어 프로그래밍의 이해 Ch05. 명령문 Phylogenetic: 계통, 발생(학)의.
쉽게 풀어쓴 C언어 Express 제10장 배열 C Express.
6장 배열.
제 3 장 상수와 변수
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
4장 제어문 선택문: if 문, if – else 문, switch 문
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
제 11 장 전처리기.
13. 포인터와 배열! 함께 이해하기.
컴퓨터 개론 및 실습 Dept. Computer Eng. Hankuk University of Foreign Studies
제2장 데이터형과 표준 입출력문 문봉근.
제13장 전처리 및 기타기능.
C언어 프로그래밍의 이해 Ch13. 선행처리기와 주석문.
제 6장 함수 Hello!! C 언어 강성호 김학배 최우영.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
제 4장 전처리기와 매크로 Hello!! C 언어 강성호 김학배 최우영.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
쉽게 풀어쓴 C언어 Express 제15장 전처리 및 비트연산 C Express Slide 1 (of 29)
함수와 변수 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제어문 & 반복문 C스터디 2주차.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
#1 배열 활용 #include int main(void) { int i; int grade[5]; grade[0] = 10; grade[1] = 20; grade[2] = 30; grade[3] = 40; grade[4] = 50; for(i=0;i.
-Part2- 제1장 1차원 배열이란 무엇인가.
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
C언어 프로그래밍의 이해 Ch05. 명령문.
-Part1- 제7장 반복문이란 무엇인가.
18장. 다차원 배열 그리고 포인터.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 26. 매크로와 선행처리기.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express Slide 1 (of 25)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
어서와 C언어는 처음이지 제16장.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
C.
개정판 누구나 즐기는 C언어 콘서트 제3장 변수와 자료형 출처: pixabay.
Chapter 09. 배열.
어서와 C언어는 처음이지 제22장.
배열, 포인터, 함수 Review & 과제 1, 2.
11장. 1차원 배열.
Presentation transcript:

제10장 전처리기 문봉근

제10장 전처리기 10.1 #include 10.2 #define 10.3 #undef 10.4 #if, #else, #elif, #endif 10.5 #ifdef, #ifndef 10.6 #error, #line

전처리기 명령어 전처리기는 원시코드가 컴파일되기 전에 C언어의 문법과는 독립적으로 실행시켜 매크로(macro) 문장이 있으면 정의된 문장으로 치환해주는 역할을 담당한다.

10.1 #include 예제 10.1 #include 사용 예 #include <stdio.h> #include <conio.h> #include "my.h" #include "a:\max.h" void main(void) { ..... ...... }

예제 10.2 factorial 구하는 프로그램 // factorial.h #define ONE 1 int factorial(int n) { if (n > ONE) return(n*factorial(n-1)); else return(ONE); } // factorial.c #include <stdio.h> #include "factorial.h" void main(void) int num; scanf("%d", &num); printf("%d != %d",num,factorial(num)); 실행결과 3 3!= 6

10.2 #define 문법 (1) #define 매크로명 문자열 또는 상수

예제10.3 인수를 포함하지 않는 매크로 정의 프로그램 설명 #define MAX 20 #define TRUE 1 #define FALSE 0 #define PI 3.141592 #define BASE 256 #define EOF -1 설명 프로그램내에 MAX라는 부분은 컴파일 하기 전에 20으로 전부 치환된다. 마찬가지 이유로, TRUE는 1, FALSE는 0, PI는 3.141592, BASE는 256, EOF는 -1 등으로 치환된다.

예제10.4 인수를 포함하는 매크로 정의 프로그램 설명 예제10.4 인수를 포함하는 매크로 정의 프로그램 #define MAX(x,y) ( ((x)>(y)) ? (x) : (y) ) #define ADD(a,b) ((a)+(b)) #define MUL(a,b) ((a) * (b)) #define PRINTD(dt) printf("%d\n",dt); 설명 프로그램내에 MAX(1st, 2nd)이와 같은 형태로 되어 있는 부분이 있다면 전처리기는 ( ((1st)>(2nd)) ? (1st) : (2nd) ) 으로 치환한다. 두 번째, ADD(1st, 2nd)와 같은 형태의 문장이 있다면 ( (1st) + (2nd) )로 치환한다. 세 번째와 네 번째도 마찬가지 방법으로 치환시킨다.

예제10.5 매크로 치환이 일어나지 않는 예 프로그램 실행결과 #include <stdio.h> 예제10.5 매크로 치환이 일어나지 않는 예 프로그램 #include <stdio.h> #define TRUE    1 #define  MAX(x,y)   ( ((x)>(y)) ? (x) : (y) ) void main(void) {        char str[] = "MAX(3,5)";        printf("%s, TRUE \n", str); } 실행결과 MAX(3, 5), TRUE

예제10.6 괄호를 사용하지 않아서 문제가 발생한 매크로 정의 #include <stdio.h> #define ADD(x) x+x void main(void) { int a, b = 4; a = ADD(b) / 2; printf("a = %d\n", a); } 실행결과 a = 6

예제10.7 괄호를 충분히 사용한 매크로 정의 #include <stdio.h> #define ABS(x) ((x<0)? -(x):(x)) #define MAX(x,y) ((x<y)? y:x) #define MIN(a,b) ((a<b)? a:b) #define ADD(x) (x+10) void main(void) { int i = -10; float j = 10.666; printf("%3d %f\n", ABS(i), ABS(j)); printf("%3d \n", (int)MAX(i,j)); printf("%3d \n", ADD(ABS(i))*2); } 실행결과 10 10.666000 10 40

예제10.8 두 수를 입력받아 큰 수를 찾아내고 이 두 수를 이용하여 사칙연산을 수행하는 프로그램 #include <stdio.h>   #include <conio.h>   #define MAX(a,b)   (((a)>(b))?(a):(b))   #define MUL(a,b)   a*b   #define DIV(a,b)   a/b   #define ADD(a,b)   a+b   #define SUB(a,b)   a-b   #define PRINTD(dt) printf("%d\n",dt);      void main(void)   {          int a,b,mu,di,ad,su,max;          printf("input(a,b) :");          scanf("%d %d",&a,&b);          max = MAX(a,b);          mu  = MUL(a,b);          di   = DIV(a,b);          ad  = ADD(a,b);          su  = SUB(a,b);          PRINTD(max);           PRINTD(mu);          PRINTD(di);          PRINTD(ad);          PRINTD(su);          getch();   } 실행결과 input (a, b) : 12 4 12 48 3 16 8

10.3 #undef 프로그램내에서 정의된 매크로를 해제하기 원할 때가 있다. #undef는 이미 정의된 매크로 정의를 해제할 때 사용한다. 문법 #undef 매크로명

예제10.9 매크로로 선언한 부분을 #undef 로 해제하는 프로그램 #include <stdio.h> #include <conio.h> #define SIZE 100 #define PRINTD(dt) printf("%d\n",dt); void main(void) {        int a,b,c;        a=SIZE;        PRINTD(a); #define SIZE 200        b=SIZE;        PRINTD(b); #undef SIZE #define SIZE 300        c=SIZE;        PRINTD(c);        getch(); } 실행결과 100 200 300

10.4 #if, #else, #elif, #endif 문법 #if 조건식 1 블록 1; 조건식 1이 참일때 블록2 ; 조건식 1이 거짓이고 2가 참일때 #else 블록 3; 조건식 1,2가 거짓일 때 #endif 블록조건식의 끝을 나타내는 문장

예제 10.10 C 프로그램을 전처리기가 처리한 예로써 실행결과에 나온 프로그램을 컴파일러가 실행파일로 만들게 된다. #define MIN 5 #define MAX 500 void main(void) {        int i, j, p;        i = 10;        j = 20;        p = 0;        while(p == 0){ #if MIN < 10                j = 1000; #else                j = 50; #endif                p++;        } #if MAX > 200        j = 5; } 실행결과 void main(void) {        int i, j, p;        i = 10;        j = 20;        p = 0;        while(p == 0){                j = 1000;                p++;        }        j = 5; }

예제 10.11 조건부 컴파일을 이용한 프로그램 #include <stdio.h> #include <conio.h> #define TRUE  1 #define FALSE 2 #define EQUAL 3 #define CONDITION  TRUE #define EQ  == void main(void) { #if CONDITION EQ TRUE        printf(" CONDITION is TRUE\n"); #elif CONTION EQ FALSE        printf("CONDITION is FALSE\n"); #else        printf("CONDITION is EQUAL\n"); #endif        getch(); } 실행결과 CONDITION is TRUE

10.5 #ifdef, #ifndef #ifdef는 매크로가 지정되어 있는 경우에 수행하고

예제 10.12 매크로가 정의되었는지를 알아보는 프로그램 #include <stdio.h> #include <conio.h> #define MAX 100 void main(void) { #ifdef  MAX        printf("MAX = %d\n",MAX); #endif #ifdef   MIN        printf("%d\n",MIN); #else        printf("MIN is not defined !");        getch(); } 실행결과 MAX = 100 Min is not defined!

예제 10.13 조건부 컴파일을 이용한 프로그램 #define DEBUG #include <stdio.h> void func(int a, int b) {        int c;          c=(a++)+(b++); #ifdef DEBUG        printf("i=%d, j=%d, c=%d\n",a,b,c); #endif } void main(void)        int i,j;        printf("i=%d, j=%d\n", i, j);        i=5; j=8;        func(i, j); 실행결과 I = 858993460, j = 858993460 I = 6, j = 9, c = 13

10.6 #error, #line 문법 #error "메시지......"

예제 10.14 #error을 이용하는 예 #include <stdio.h> #include <conio.h> #define MAX 100 #define MIN 101 void main(void) { #if  MIN > MAX        #error "MIN > MAX" #endif }

10.6 #error, #line(계속) 문법 #line 줄번호 "파일명" 컴파일러에게 지시하는 명령어로 줄번호를 바꾸고 파일명도 바꿔서 출력하라는 지시이다.

예제 10.15 #line을 이용하는 예 #include <stdio.h> #include <conio.h> #define MAX 100 #define MIN 101 void main(void) {        int a, b;        a = 5;        b = a*a;        a = int; #line 100 "error.c"        b = (a - 5;        printf("a = %d, b = %d \n", a, b); }