• Tidak ada hasil yang ditemukan

분 할 분 할 분 할 분 할 컴 파 일 컴 파 일 컴 파 일 컴 파 일

N/A
N/A
Protected

Academic year: 2023

Membagikan "분 할 분 할 분 할 분 할 컴 파 일 컴 파 일 컴 파 일 컴 파 일"

Copied!
17
0
0

Teks penuh

(1)

객 체 객 체 객 체 객 체 지 향 지 향 지 향 지 향 프 로 그 래 밍 프 로 그 래 밍 프 로 그 래 밍 프 로 그 래 밍 (O b je c t O ri e n te d P ro g ra m m in g ) (O b je c t O ri e n te d P ro g ra m m in g ) (O b je c t O ri e n te d P ro g ra m m in g ) (O b je c t O ri e n te d P ro g ra m m in g ) 9 장 강 사 – 강 대 기

(2)

차 례 차 례 차 례 차 례 (A g e n d a ) (A g e n d a ) (A g e n d a ) (A g e n d a )

분할컴파일 기억존속시간 사용범위 링크 위치지정new 이름공간

(3)

분 할 분 할 분 할 분 할 컴 파 일 컴 파 일 컴 파 일 컴 파 일

Unix의경우, make (Windows에서도가능) 전체프로그램을분할한다. OOP 함수들을분할하고, 공통으로필요한부분은 헤더로넣는다 실행파일의메모리에들어가야하는것은헤 더에넣을수없다. 따라서, global.c와같은 파일이필요하다

(4)

분 할 분 할 분 할 분 할 컴 파 일 컴 파 일 컴 파 일 컴 파 일 예예예예

(5)

M a ke M a ke M a ke M a ke

Unix

make, gmake Windows

make, nmake(VC 디렉토리에 있음), gmake Java는?

Ant SE 충고

일일빌드! 코드공유및관리도구

CVS, VSS, SVN

(6)

M a ke fi le M a ke fi le M a ke fi le M a ke fi le 의의의의 가 장 가 장 가 장 가 장 쉬 운 쉬 운 쉬 운 쉬 운 예예예예

all:(탭)hello.c (탭)gcc-o hello hello.c : Makefile . make

f Makefile http://kldp.org/KoreanDoc/html/GNU-Make/GNU- Make-7.html

(7)

헤 더 에 헤 더 에 헤 더 에 헤 더 에 들 어 가 는 들 어 가 는 들 어 가 는 들 어 가 는 것 들 것 들 것 들 것 들

함수프로토타입 #define, const를이용해정의된상수 구조체선언 클래스선언 템플릿선언 인라인함수 함수정의나변수선언은들어가선안된다

(8)

# in c lu d e # in c lu d e # in c lu d e # in c lu d e 헤 더 에 는 헤 더 에 는 헤 더 에 는 헤 더 에 는 if n d e f if n d e f if n d e f if n d e f 를를를를 활 용 활 용 활 용 활 용

언제나바보같은상황에서헤더를중복하여 include 할수있는위험성이존재한다 이를방어하기위해#ifndef, #define, #endif로include 하는코드를감싸야한다

(9)

기 억 기 억 기 억 기 억 존 속 존 속 존 속 존 속 시 간 시 간 시 간 시 간

특정변수나객체는얼마나오래메모리에머 무는가? 자동(오토), 정적(스태틱), 동적(다이내믹) 자동

자동, 레지스터

블록이나함수와생 성/사멸을같이함 정적

외부링크, 내부링크, 링크없음

일단 생기면, 프로그램끝날때까지 동적

new/delete로알아서생성/사멸

(10)

자 동 자 동 자 동 자 동 변 수 변 수 변 수 변 수

자동 intindex;auto int index; 레지스터

(11)

정 적 변 수 정 적 변 수 정 적 변 수 정 적 변 수

프로그램이실행되는전체시간동안존속 이미0이나NULL로초기화되어있음 외부링크

전역변수 내부링크

전역변수앞에static 링크없음

자동변수앞에static

(12)

제 한 자 제 한 자 제 한 자 제 한 자 (5 2 3 (5 2 3 (5 2 3 (5 2 3 쪽쪽쪽쪽 ))))

기억공간제한자 auto, register, static, extern, mutable cv제한자 const , volatile 기억공간: const 는#define 처럼행동한다

(13)

함 수 함 수 함 수 함 수 링 크 링 크 링 크 링 크 / / / / 언 어 언 어 언 어 언 어 링 크 링 크 링 크 링 크

static inline#define “C”-_spiff, _printf, _scanf “C++”-spiff_d_d@v(이름장식) Calling Convention __cdecl, __stdcall, __fastcall 옛날꺼–__pascal, __fortran, __syscall

(14)

동 적 동 적 동 적 동 적 저 장 저 장 저 장 저 장 공 간 공 간 공 간 공 간

동적기억공간관리의복잡도 new / deleteGC int* p = new int[10]; p/정, JavaNULL

(15)

위 치 위 치 위 치 위 치 지 정 지 정 지 정 지 정 n e w n e w n e w n e w

이미할당된기억공간을같이사용하는방식 예를들어 char buffer[100]; double* pd = new (buffer) double[10]; #include <new> 필요 delete를하면안됨

(16)

이 름 이 름 이 름 이 름 공 간 공 간 공 간 공 간 (5 3 6 (5 3 6 (5 3 6 (5 3 6 쪽쪽쪽쪽 ))))

과거의C++ 이름공간(534쪽) , , 전역위치에놓이며중첩가능(543쪽) 외부링크 전역이름공간

전역변수 항상열려있다

새로추가가능 이름공간제한자

:: (qualified name)

(17)

u s in g u s in g u s in g u s in g 선 언 과 선 언 과 선 언 과 선 언 과 u s in g u s in g u s in g u s in g 지 시 자 지 시 자 지 시 자 지 시 자

using(declaration) using Jill::fetch 같은게있으면충돌! 사용이더권장됨 using(directive) using namespace Jill; 같은게있으면가리워짐

(545 )

Referensi

Dokumen terkait

4 Penyitaan Jaminan Penyitaan jaminan merupakan jalan terakhir apabila nasabah sudah benar-benar tidak punya itikad baik ataupun sudah tidak mampu lagi untuk membayar semua

Gambier Port Augusta Port Pirie Renmark Whyalla TASMANIA Northern Launceston Burnie Devonport TASMANIA Southern Hobart Queenstown VICTORIA Melbourne Ararat Ballarat Bendigo Box