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

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

슬라이드 1

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-2pointer.ppt

슬라이드 1

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

슬라이드 1

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

Microsoft PowerPoint - ch01.ppt

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

Microsoft PowerPoint - [2009] 02.pptx

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

K&R2 Reference Manual 번역본

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - chap-03.pptx

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

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

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

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

11장 포인터

Microsoft PowerPoint - Lesson2.pptx

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

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

<4D F736F F F696E74202D20C1A63135C0E520C0FCC3B3B8AEB9D7BAF1C6AEBFACBBEA>

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

OCW_C언어 기초

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

Microsoft PowerPoint - chap08.ppt

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

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

PowerPoint Presentation

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

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

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

슬라이드 1

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

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

슬라이드 1

Microsoft PowerPoint - Chapter_04.pptx

PowerPoint 프레젠테이션

PowerPoint Template

Microsoft PowerPoint - c2.ppt

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

untitled

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

Microsoft PowerPoint - chap4_2013 [호환 모드]

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - 08_C_Language_Preprocessor

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

02장.배열과 클래스

C 언어와 프로그래밍 개요

Microsoft PowerPoint - ch07 - 포인터 pm0415

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

C 프로그램의 기본

Microsoft PowerPoint - chap04-연산자.pptx

OCW_C언어 기초

Microsoft PowerPoint - chap05-제어문.pptx

중간고사

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

PowerPoint Presentation

Microsoft PowerPoint - CP_02_Convert_To_C_02_Step.pptx

<4D F736F F F696E74202D20C1A632B0AD20BAAFBCF6BFCD20C0DAB7E12C20C0FCC3B3B8AEBFCD20C0D4C3E2B7C2>

Microsoft PowerPoint - Chapter_08.pptx

슬라이드 1

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

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

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

본 강의에 들어가기 전

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

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap-02.pptx

untitled

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

Microsoft PowerPoint - 1C언어소개0.PPT

Microsoft PowerPoint - gnu-w09-c-chap

Microsoft PowerPoint - chap-04.pptx

chap10.PDF

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap06-8.ppt

C++ Programming

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

C언어 및 실습 C Language and Practice

쉽게 풀어쓴 C 프로그래밍

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

Microsoft PowerPoint - 제9강 문자열

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

untitled

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

PowerPoint Template

Microsoft PowerPoint - chap-04.pptx

PowerPoint 프레젠테이션

ABC 2장

C++ Programming

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

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

Transcription:

2011-1 학기프로그래밍입문 (1) 참고자료 : chapter 8-1. 전처리 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net

전처리명령어 컴파일과정에는전처리 (preprocessing) 단계가있다. - 컴파일러는목적파일을만들기전에전처리라고하는특별한작업을 먼저수행한다. - 전처리과정에서소스파일에다른파일의텍스트를포함시키거나일부문장을다른문장으로바꾸는작업등을수행한다. - 전처리명령어는 # 기호로시작한다. - 전처리가끝난파일역시소스파일과마찬가지로텍스트파일이다. 한빛미디어 -2- ehanbit.net

include 명령으로파일을포함한다. include명령은원하는파일을특정디렉토리에서찾아서명령어가사용된곳에포함시킨다. - 꺽쇠괄호는포함할파일을컴파일러에설정되어있는특정디렉토리에서찾는다. VC++6.0 컴파일러에설정되어있는 include 디렉토리 - 큰따옴표는포함할파일을우선현재의작업디렉토리에서찾고해당파일이존재하지않으면컴파일러에설정되어있는디렉토리에서찾는다. #include c: user myheader.h // 포함할파일의위치를직접지정할때사용한다. 한빛미디어 -3- ehanbit.net

include 명령으로파일을포함한다. 헤더파일을사용하면프로그램을깔끔하고편리하게작성할수있다. - 여러프로그램에서공통적으로사용하는구조체나함수또는외부변의선언을헤더파일로만들어놓고각프로그램에서간단히포함하여사용한다. myheader.h 로작성하여현재의작업디렉토리에저장해둔다. 한빛미디어 -4- ehanbit.net

define 명령어로매크로상수를만들자. define 명령어는매크로명을정의하여복잡한상수나문장을의미있는단어로사용할수있도록한다. - 컴파일러는전처리과정에서프로그램에서사용된매크로명을확장문자열로치환한다. #include <stdio.h> // 이곳에는 stdio.h 헤더파일의내용이포함된다. #define PI 3.14159 전처리후 double radius; double radius; printf(" 원의반지름을입력하세요 : "); printf(" 원의반지름을입력하세요 : "); scanf("%lf", &radius); scanf("%lf", &radius); printf(" 원의둘레 : %lf n", 2*3.14159*radius); printf(" 원의둘레 : %lf n", 2*PI*radius); printf(" 원의면적 : %lf n", 3.14159*radius*radius); printf(" 원의면적 : %lf n", PI*radius*radius); return 0; // 매크로명이상수값으로치환 return 0; 한빛미디어 -5- ehanbit.net

문장으로치환되는매크로명 매크로명은복잡한수식이나문장에도사용할수있다. #define INTRO Perfect C Language & Data Structure 여러줄에걸쳐사용할때는백슬래시를사용하여연결시킨다. printf( Introduction => %s, INTRO); printf( Introduction => %s, Perfect C Language & Data Structure ); - 매크로명은복잡한숫자나문자열등을의미있는단어로표현함으로써프로그램을읽기쉽게해주고매크로명의수정이쉬우므로유지보수에도움이된다. 한빛미디어 -6- ehanbit.net

여러가지매크로명을사용한프로그램 #include <stdio.h> #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(% %.2lf (%s) n", area, MSG); return 0; // 그렇지않으면면적과문자열출력 한빛미디어 -7- ehanbit.net

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- ehanbit.net

매크로함수사용할때주의할점 매크로함수는확장후에다른연산자와의추가적인연산에의해서부작용이생길수있다. #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, 2+3)); printf( %d n, 30/((2)*(2+3))); 한빛미디어 -9- ehanbit.net

매크로함수를활용한프로그램 #include <stdio.h> #define PI 3.14159 #define SQUARE(x) ((x)*(x)) // 매크로상수정의 // 제곱을구하는매크로함수정의 double radius; printf(" 반지름을입력하세요 : "); scanf("%lf", &radius); printf(" 원의면적은 : %.2lf", PI*SQUARE(radius)); return 0; // 매크로상수와매크로함수를사용하여원의면적을구한다. 한빛미디어 -10- ehanbit.net

조건부컴파일전처리명령어 조건부컴파일은프로그램코드를조건에따라선택적으로컴파일할수있도록전처리단계에서걸러준다. 명령어에는 if, else, elif, ifdef, ifndef, endif 등이있다. - 조건식에괄호가필요없으며반드시 #endif 로끝을표시해준다. - 형식1 : if선택문의 if~else if~else구문과처리방식이같다. - 형식2 : 매크로명의정의에따라문장을선택적으로컴파일한다. - 형식3: 매크로명이정의되지않았을때선택적으로컴파일한다. 한빛미디어 -11- ehanbit.net

조건부컴파일을사용한예 #include <stdio.h> #define TC #ifdef TC #include <conio.h> #define MAX_INT 32767 #else #define MAX_INT 2147483647 #endif int m=max_int; #ifdef TC clrscr(); #endif printf("maximum value => %d n", m); #ifdef TC getch(); #endif return 0; 조건부컴파일이수행되면 #include <stdio.h> #define TC #include <conio.h> #define MAX_INT 32767 int m=max_int; clrscr(); printf("maximum value => %d n", m); getch(); return 0; 한빛미디어 -12- ehanbit.net

헤더파일의중복포함을해결하자. 조건부컴파일을사용하면헤더파일의포함관계가복잡해질때자신의헤더파일을다시포함하는문제를해결할수있다. personal.h 헤더파일이중복되는예 한빛미디어 -13- ehanbit.net

헤더파일의중복포함을해결하자. 헤더파일의선두에조건에따라특정매크로명을정의하여같은헤더파일이두번이상포함되지못하도록만든다. 두번째포함될때는 PERSONAL 이정의되어있으므로매크로가확장되지않는다!! 한빛미디어 -14- ehanbit.net

const 를사용한기호상수 변수에 const 를사용하면상수화되므로변수를기호상수처럼사용 할수있다. - const를사용하여변수를상수화시키면그값을바꿀수없으므로반드시선언과동시에초기화해야한다. #include <stdio.h> const double Tax_Rate=0.12; int income; // 세율을 12% 로고정시킨다. // 소득액을저장할변수 printf( 소득액을입력하세요 : ); scanf( %d, &income); printf( 세금은 : %.1lf 입니다. n, income*tax_rate); return 0; // Tax_Rate 는상수와같이사용된다. 한빛미디어 -15- ehanbit.net