Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

Similar documents
Microsoft PowerPoint - chap08-1 [호환 모드]

본 강의에 들어가기 전

슬라이드 1

Microsoft PowerPoint - chap12-고급기능.pptx

K&R2 Reference Manual 번역본

Microsoft PowerPoint - ch 전처리기, 다중 소스파일 pm1015

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

금오공대 컴퓨터공학전공 강의자료

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - 08_(C_Programming)_(Korean)_Preprocessing

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

Microsoft PowerPoint - [2009] 02.pptx

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

11장 포인터

Microsoft PowerPoint - 08_C_Language_Preprocessor

C 언어 프로그래밊 과제 풀이

Microsoft PowerPoint - chap-03.pptx

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

슬라이드 1

Microsoft PowerPoint - chap11-포인터의활용.pptx

02장.배열과 클래스

윤성우의 열혈 TCP/IP 소켓 프로그래밍

<4D F736F F F696E74202D20C1A63135C0E520C0FCC3B3B8AEB9D7BAF1C6AEBFACBBEA>

Microsoft PowerPoint - chap03-변수와데이터형.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - Lesson2.pptx

슬라이드 1

PowerPoint Presentation

Microsoft PowerPoint - ch01.ppt

금오공대 컴퓨터공학전공 강의자료

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

슬라이드 1

chap10.PDF

제 15 장전처리및비트연산 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - additional01.ppt [호환 모드]

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

Microsoft PowerPoint - Chapter_08.pptx

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

PowerPoint Template

Microsoft PowerPoint - chap10-함수의활용.pptx

C 언어의구성요소인상수, 변수, 입 출력함수에 대하여학습

OCW_C언어 기초

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - c2.ppt

untitled

컴파일러

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

Microsoft PowerPoint - chap06-5 [호환 모드]

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Microsoft PowerPoint - ch07 - 포인터 pm0415

슬라이드 1

C++-¿Ïº®Çؼ³10Àå

Microsoft PowerPoint - Chapter_04.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

C언어 및 실습 C Language and Practice

중간고사

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Microsoft PowerPoint - chap06-1Array.ppt

11장 포인터

슬라이드 1

Microsoft PowerPoint - chap08.ppt

슬라이드 1

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

C 프로그래밊 개요

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - chap4_2013 [호환 모드]

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

PowerPoint 프레젠테이션

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

Microsoft PowerPoint - chap01-C언어개요.pptx

OCW_C언어 기초

untitled

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - CP_02_Convert_To_C_02_Step.pptx

기초컴퓨터프로그래밍

untitled

설계란 무엇인가?

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

11장 포인터

ch15

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

OCW_C언어 기초

PowerPoint Presentation

PowerPoint Template

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou


Transcription:

19. 전처리와분할컴파일 순천향대학교컴퓨터학부이상정 1 학습내용 전처리명령어 #include #define 기호상수 const 분할컴파일 순천향대학교컴퓨터학부이상정 2

전처리과정 전처리 (preprocessor) 전처리명령어는 # 기호로시작 #incldue #define 순천향대학교컴퓨터학부이상정 3 #include (1) 지정된파일을프로그램에삽입 꺽쇠괄호는포함할파일을컴파일러에설정되어있는특정디렉토리에서검색 큰따옴표는포함할파일을우선현재의작업디렉토리에서찾고해당파일이존재하지않으면컴파일러에설정되어있는디렉토리에서검색 #include c: user myheader.h // 포함할파일의위치를직접지정할때사용한다. 순천향대학교컴퓨터학부이상정 4

#include (2) 헤더파일을사용하면프로그램이간결 여러프로그램에서공통적으로사용하는구조체나함수또는외부변의선언을헤더파일로작성 myheader.h로작성하여현재의작업디렉토리에저장해둔다. 순천향대학교컴퓨터학부이상정 5 #define 복잡한상수나문장을매크로명 ( 심볼기호 ) 으로정의 컴파일러는전처리과정에서프로그램에서사용된매크로명을확장문자열로치환 #define PI 3.14159 전처리후 double radius; printf(" 원의반지름을입력하세요 : "); scanf("%lf" %lf, &radius); printf(" 원의둘레 : %lf n", 2*PI*radius); printf(" 원의면적 : %lf n", PI*radius*radius); 순천향대학교컴퓨터학부이상정 6 // 이곳에는 stdio.h 헤더파일의내용이포함된다. double radius; printf(" 원의반지름을입력하세요 : "); scanf("%lf", &radius); printf(" 원의둘레 : %lf n", 2*3.14159*radius); printf(" 원의면적 : %lf n", 3.14159*radius*radius);

#define PI 3.14159 // 매크로상수정의 #define LIMIT 100.0 // 매크로상수정의 #define MSG "passed!" // 문자열을매크로명으로정의 #define ERR_PRN printf(" 범위를벗어났습니다! n") // 출력문을매크로명으로정의 double radius, area; printf(" 반지름을입력하세요 : "); scanf("%lf", &radius); area = PI*radius*radius; if (area > LIMIT) ERR_PRN; else printf(" 원의면적 : %.2lf (%s) n", area, MSG); 순천향대학교컴퓨터학부이상정 7 #define 예 매크로함수 #define SUM(x, y) x+y int x=10, y=20; int a=100, b=200; printf( x+y = %d n, SUM(x, y)); printf( a+b = %d n, SUM(a, b)); 순천향대학교컴퓨터학부이상정 8

매크로함수부작용 매크로함수는확장후에다른연산자와의추가적인연산에의해서부작용발생할가능성이있으므로확장문자열에괄호사용 #define MUL(x, y) x*y printf( %d n, 30/MUL(2, 5)); // 전처리되기전의코드 printf( %d n, 30/2*5); // 전처리된이후의코드 나눗셈이먼저연산된다! #define MUL(x, y) ((x)*(y)) // 확장문자열의각문자를모두괄호로감싼다. printf( %d n, 30/MUL(2, 5)); printf( %d n, 30/((2)*(5))); 순천향대학교컴퓨터학부이상정 9 매크로함수예 #define SQUARE(x) ((x)*(x)) // 제곱을구하는매크로함수정의 int data = 3; printf("1. SQUARE(data) : %d n", SQUARE(data)); printf("2. SQUARE(++data): %d n", SQUARE(++data)); 순천향대학교컴퓨터학부이상정 10

조건컴파일 조건컴파일은프로그램코드를조건에따라선택적으로컴파일할수있도록전처리단계에서처리 if, else, elif, ifdef, ifndef, endif 순천향대학교컴퓨터학부이상정 11 #define TC 조건컴파일예 조건부컴파일이수행되면 #ifdef TC #include <conio.h> #define MAX_INT 32767 #else #define MAX_INT 2147483647 #define TC #endif #include <conio.h> #define MAX_INT 32767 int m=max_int; #ifdef TC clrscr(); int m=max_int; #endif clrscr(); printf("maximum value => %d n", m); #ifdef TC printf("maximum value => %d n", m); getch(); getch(); #endif 순천향대학교컴퓨터학부이상정 12

헤더파일중복예 (1) personal.h 헤더파일이중복되는예 순천향대학교컴퓨터학부이상정 13 헤더파일중복예 (2) 두번째포함될때는PERSONAL이정의되어있으므로매크로가확장되지않는다!! 순천향대학교컴퓨터학부이상정 14

const 를사용한기호상수 (1) 변수에 const 를사용하면상수화되므로변수를기호상수처럼사용 const를사용하여변수를상수화시키면그값을바꿀수없으므로반드시선언과동시에초기화 const double Tax_Rate=0.12; int income; printf( 소득액을입력하세요 : ); scanf( %d, &income); printf( 세금은 : %.1lf입니다. n, income*tax_rate); 순천향대학교컴퓨터학부이상정 15 const 를사용한기호상수 (2) 포인터변수에 const 가붙으면가리키는기억공간의값을고정 int a=10, b=20; const int *ap=&a; // 포인터변수는 a를가리킨다. printf( 변수 a 의값 : %d n, *ap); ap=&b; // 포인터변수로 b를가리키게할수도있다. printf( 변수b의값 :%d n, *ap); *ap=100; // ap 가가리키는변수 b 의값을 100 으로바꿀수없다!! 가인수선언시 const 변수를사용하여함수내에서값이변경되지않도록보장 printf( 홍길동 ); int printf(const char *format, ); // 함수의호출 // 함수의원형 순천향대학교컴퓨터학부이상정 16

분할컴파일 분할컴파일 하나의프로그램을여러개의파일 ( 모듈 ) 로분할하여작성 각파일을각각컴파일한후에링크시켜서하나의실행프로그램생성 분할컴파일을하면여러사람이나누어작성할수있고모듈별로에러를수정할수있으므로프로그램의생산성이향상 순천향대학교컴퓨터학부이상정 17 // a.c 파일 void input_value(int *, int *); void print_value(int, int); void exchange(int *, int *); int a, b; 분할컴파일예 1 (1) void input_value(int *ap, int *bp) printf(" 두정수값을입력하세요 :"); scanf("%d%d", ap, bp); input_value(&a, &b); print_value(a, b); exchange(&a, &b); print_value(a, b); 순천향대학교컴퓨터학부이상정 18

분할컴파일예 1(2) // b.c 파일 void print_value(int x, int y) printf(" 두정수값 : %d, %d n", x, y); void exchange(int *ap, int *bp) int temp; temp = *ap; *ap = *bp; *bp = temp; 순천향대학교컴퓨터학부이상정 19 // C a.c 프로그래밍파일활용 void input_value(); void print_value(); void exchange(); int a, b; // 외부변수의정의 input_value(); print_value(); exchange(); print_value(); void input_value() printf(" 두정수값을입력하세요 :"); scanf("%d%d", &a, &b); 순천향대학교컴퓨터학부이상정 20 분할컴파일예 2 // b.c 파일 extern int a, b; // 외부변수참조 void print_value() printf(" 두정수값 : %d, %d n", a, b); void exchange() int temp; temp = a; a = b; b = temp;

과제 1 매크로명 PI 를 3.141592 와원의면적을계산하는매크로 AREA(r) 를정의하여, 반지름 r을입력받아원의면적을계산하는프로그램을작성하라. #define PI 3.141592 #define AREA(r) 순천향대학교컴퓨터학부이상정 21 과제2(1) 앞의구조체과제 18-2-2 를수정 학생 n 명의학번, 국어, 영어, 수학점수를파일로부터입력받아총 점과평균을화면에성적순으로출력하는프로그램을작성하라. 단, 프로그램파일은다음과같이 3 개의파일로분리하여작성한다. score.h #include <string.h> #include <stdlib.h> struct student char *name; int num; int scores[3]; int total; double average; ; 순천향대학교컴퓨터학부이상정 22

과제2(2) a.c #include "score.h" void input_score(); void output_score(); struct student p[60]; int n; input_score(); output_score(); 순천향대학교컴퓨터학부이상정 23 b.c #include "score.h" extern struct student p[60]; extern int n; void input_score() void output_score()