(Window Application Programming)

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
.Net History. Visual Studio.Net 2002 /.Net Framework 1.0 제품의 버전 / 특징 2002 년 - Visual Studio.Net 2002 /.Net Framework 1.0 첫 통합 개발 환경 - C# 언어 등장 (C# 1.0)
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++로 프로그래밍한다는 것의 의미 세상에서 가장 간단한 C++ 프로그램
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++ 프로그래밍 기초 : 객체지향의 시작 C++로 프로그래밍한다는 것의 의미
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Image & Video processing
Database Laboratory, Hong Ik University
Power Java 제3장 이클립스 사용하기.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
최윤정 Java 프로그래밍 클래스 상속 최윤정
C 프로그래밍 I.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
C 언어 강의 Windows, Unix 중심으로.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
컴퓨터 프로그래밍 기초 [Final] 기말고사
Power Java 제2장 자바 개발 도구.
C 언어 1 1주차 C언어 시작하기 - 1차시 C 언어 특징 및 프로젝트 생성 Programming Language.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
C / C++ Programming in multi platform
Visual Basic .NET 처음 사용하기.
1. C++ 시작하기.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
컴퓨터정보공학부 서버 안내 [ IBM x3500 ] it.sangji.ac.kr ict.sangji.ac.kr 혹은
10장. 예외처리.
명품 C++ 프로그래밍 1장. C++ 시작.
프로그래밍 언어 (C 언어) 기초 과목 개요 문양세 강원대학교 IT대학 컴퓨터과학전공.
13. 연산자 오버로딩.
제14장 예외처리와 템플릿 예외 처리의 개요를 학습한다. 예외 처리를 적용할 수 있다. 템플릿의 개념을 이해한다.
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
Chap 6.Assembler 유건우.
27장. 모듈화 프로그래밍.
영상처리 실습 인공지능연구실.
제 1장. C++ 시작하기.
프로그래밍 언어론 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
자바 5.0 프로그래밍.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Power Java 제11장 상속.
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
강의 소개 컴퓨터시뮬레이션학과 2017년 봄학기 담당교수 : 이형원 E304호,
12. 상속 : 고급.
( Windows Service Application Debugging )
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
C 프로그래밍 I.
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
공학도를 위한 C언어 프로그래밍실습1 -통합개발환경 사용법-
발표자 : 이지연 Programming Systems Lab.
Numerical Analysis Programming using NRs
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
7 생성자 함수.
1장. C Language Synopsis.
6 객체.
Presentation transcript:

(Window Application Programming) 강좌명 : 윈도우 응용프로그래밍 (Window Application Programming) 강좌번호 : E076520-01 (2017학년 1학기, 컴퓨터공학과) 이수구분 : 전공선택 강의시간 : 월12:00-14:50 강의실 : 7호관 410호 담당교수 : 김권양(컴퓨터공학과) kykim@kiu.ac.kr, 053-600-5561 http://ce.kiu.ac.kr/~kykim/index.html 평가 : 중간고사(30%), 기말고사(30%), 보고서(20%), 출석(20%) 1

University of Central Florida 담당교수 http://ce.kiu.ac.kr/~kykim/ Mail : kykim@kiu.ac.kr ETRI 경북대학교 한국지능시스템학회 University of Central Florida 경일대학교 한국전자통신연구원 컴퓨터공학과 지능정보미디어 School of Computer Info. 컴퓨터공학과

교재 소개 교재 : 명품 C++ Programming 저자 : 황기태 출판사 : 생능출판사 출판년도 : 2013. 7. 참고문헌 C++ ESPRESSO 에스프레소, 천인국, 인피니티북스, 2011. Visaul C++ 2010 MFC Programming, 정일홍, 생능출판사, 2013 원도우프로그래밍, 김선우, 한빛아카데미, 2014

목차 1장 C++ 시작 1.1 컴퓨터와 프로그래밍 1.2 C++ 언어의 역사 1.3 C++ 언어의 특징 1.4 C++ 프로그램 개발 과정 1.5 C++ 표준 라이브러리 1.6 Visual C++를 이용한 C++ 프로그램 개발 2장 C++ 프로그램의 기본 2.1 C++ 프로그램의 기본 요소와 화면 출력 2.2 namespace와 std:: 2.3 키 입력 받기 2.4 키보드로 문자열 입력 2.5 #include 에 숨은 진실 3장 클래스와 객체 3.1 객체에 대한 이해 3.2 C++ 클래스 만들기 3.3 객체 생성과 객체 활용 3.4 생성자 3.5 소멸자 3.6 접근 지정 3.7 인라인 함수 3.8 C++ 구조체 3.9 바람직한 C++ 프로그램 작성법 4장 객체 포인터와 객체 배열, 객체의 동적 생성 4.1 객체 포인터 4.2 객체 배열 4.3 동적 메모리 할당 및 반환 4.4 객체와 객체 배열의 동적 생성 및 반환 4.5 this 포인터 4.6 string 클래스를 이용한 문자열 사용 5장 함수와 참조, 복사 생성자  5.1 함수의 인자 전달 방식 리뷰 5.2 함수 호출시 객체 전달 5.3 객체 치환 및 객체 리턴 5.4 참조와 함수 5.5 복사 생성자 6장 함수의 다형성과 static 멤버  6.1 함수 중복 6.2 디폴트 매개 변수 6.3 함수 중복의 모호성 6.4 static 멤버

목차 10장 템플릿과 표준 템플릿 라이브러리 10.1 일반화와 템플릿 10.2 다양한 제네릭 함수 만들기 10.3 제네릭 클래스 만들기 10.4 C++ 표준 템플릿 라이브러리(STL)와 활용 11장 C++ 입출력 11.1 C++ 입출력 기초 11.2 ostream의 멤버 함수를 이용한 문자 출력 11.3 istream의 멤버 함수를 이용한 문자 입력 11.4 포맷 입출력 11.5 삽입 연산자(<<)와 추출 연산자(>>) 11.6 사용자 조작자 만들기 12장 C++ 파일 입출력 12.1 텍스트 파일과 바이너리 파일 12.2 파일 입출력 개요 12.3 <<와 >> 12.4 파일 모드 12.5 멤버 함수를 이용한 텍스트 I/O 12.6 바이너리 I/O 12.7 스트림 상태 검사 12.8 임의 접근 7장 프렌드와 연산자 중복  7.1 C++ 프렌드 개념 7.2 연산자 중복 7.3 이항 연산자 중복 7.4 단항 연산자 중복 7.5 프렌드를 이용한 연산자 중복 7.6 기타 연산자 중복 8장 상속  8.1 상속의 개념 8.2 클래스 상속과 객체 8.3 상속과 객체 포인터 8.4 protected 접근 지정 8.5 상속과 생성자, 소멸자 8.6 상속의 종류 : public, protected,private 상속 8.7 다중 상속 8.8 가상 상속 9장 가상 함수와 추상 클래스 9.1 상속 관계에서의 함수 중복 9.2 가상 함수와 오버라이딩 9.3 가상 함수와 오버라이딩의 활용 사례 9.4 추상 클래스

목차 13장 예외 처리와 C 언어와의 링크 지정 13.1 실행 오류와 오류 처리 13.2 예외와 예외 처리 13.3 예외 클래스 만들기 13.4 C++ 코드와 C 코드의 링킹 부록 - 심화학습 부록 A. C와 C++ 비교 부록 B. namespace 부록 C. 키 입력 시 흔히 발생하는 문제 부록 D. private이나 protected 생성자 : singleton 사례 부록 E. 한글 문자열과 한글 입출력 부록 F. 연산자 중복 추가 설명 부록 G. STL 고급 활용 부록 H. RTTI - 실행 중에 포인터로 실제 타입 알아내기 부록 I. 파일 입출력 부록 J. ASCII 표

명품 C++ 프로그래밍 1장. C++ 시작

세상을 먹어 치우는 소프트웨어 소프트웨어 기업의 세상 미국의 대형 서점 보더스 -> 아마존에 대패 블록버스터(Blockbuster) -> 네플릭스(Neflix)에 대패 eBay, Facebook, Groupon, Skype, Twitter, Android, 아이튠스, 판도라, 픽사 등 엄청난 소프트웨어 인력들을 필요로 하는 세상이 왔다.

??? TGIF  FANG

FANG : 페이스북(Facebook)·아마존(Amazon)·넷플릭스(Netflix)·구글(Google) (시계방향으로) 마크 저커버그 페이스북 창업자. 제프 베조스 아마존 창업자. 리드 헤이스팅스 넷플릭스 창업자. 래리 페이지 구글 공동 창업자. TGiF(트위터·구글·애플 아이폰·페이스북)' 

프로그래밍과 프로그래밍 언어 프로그래밍 언어 기계어(machine language) 어셈블리어 고급언어 0, 1의 이진수로 구성된 언어 컴퓨터의 CPU는 본질적으로 기계어만 처리 가능 어셈블리어 기계어의 명령을 ADD, SUB, MOVE 등과 같은 상징적인 니모닉 기호 (mnemonic symbol)로 일대일 대응시킨 언어 어셈블러 : 어셈블리어 프로그램을 기계어 코드로 변환 고급언어 사람이 이해하기 쉽고 복잡한 작업, 자료 구조,알고리즘을 표현하기 위해 고안된 언어 Pascal, Basic, C/C++, Java, C# 컴파일러 : 고급 언어로 작성된 프로그램을 기계어 코드로 변환

사람과 컴퓨터, 기계어와 고급 언어 35 + 56 = ? 기계어 어셈블리어 C++ LOAD AX 35 LOAD BX 56 01010000 00101001 11101011 LOAD AX 35 LOAD BX 56 ADD AX BX int i; i = 35 + 56; 기계어 어셈블리어 C++ 어셈블 컴파일

프로그래밍 언어의 진화와 C++의 기원 비야네 스트롭스트룹 Ken Tompson Martin Richards Dennis Ritchie Bjarne Stroustrup Assembly BCPL Fortran Algol Basic C C++ Java C# Javascript Objective-C B 1970 1972 1983 1995 1967 1954 2000 1958 1964 Visual Basic 1991 Perl 1987 PHP 비야네 스트롭스트룹

2016년, IT업계 프로그래밍 언어 순위(랭킹 및 점수) 1. codeeval (2016년 2월 기준) "Most Popular Coding Languages"

2. IEEE Spectrum (2016년 7월 기준)

3. TIOBE Index 검색엔진에 질의한 결과를 가지고 분석한 데이터

표준 C++ 프로그램의 중요성 C++ 언어의 표준 표준의 중요성 비 표준 C++ 프로그램 1998년 미국 표준원(ANSI, American National Standards Institute) C++ 언어에 대한 표준 설정 ISO/IEC 14882 문서에 작성됨. 유료 문서 표준의 진화 1998년(C++98), 2003년(C++03), 2007년(C++TR1), 2011년 (C++11) 표준의 중요성 표준에 의해 작성된 C++ 프로그램 모든 플랫폼. 모든 표준 C++ 컴파일러에 의해 컴파일 동일한 실행 결과 보장 운영체제와 컴파일러의 종류에 관계없는 높은 호환성 비 표준 C++ 프로그램 Visual C++, Borland C++ 등 컴파일러 회사 고유의 비 표준 구문 특정 C++ 컴파일러에서만 컴파일 호환성 결여

표준/비표준 C++ 프로그램의 비교 "C declarator" #include <iostream> int main() { std::cout << "Hello“; return 0; } 표준 C++ 규칙에 따라 작성된 C++ 프로그램 볼랜드 C++ 컴파일러 비주얼 C++ GNU C++ 컴퓨터 실행파일 int __cdecl main() { std::cout << "Hello"; 작성되지 않는 비주얼 C++ 프로그램 모든 C++ 컴파일러에 의해 컴파일 비주얼 C++ 전용 키워드 "C declarator"

C++ 언어의 주요한 설계 목적 C 언어와의 호환성 객체 지향 개념 도입 엄격한 타입 체크 실행 시간의 효율성 저하 최소화 캡슐화, 상속, 다형성 소프트웨어의 재사용을 통해 생산성 향상 복잡하고 큰 규모의 소프트웨어의 작성, 관리, 유지보수 용이 엄격한 타입 체크 실행 시간 오류의 가능성을 줄임 디버깅 편리 실행 시간의 효율성 저하 최소화 실행 시간을 저하시키는 요소와 해결 작은 크기의 멤버 함수 잦은 호출 가능성 -> 인라인 함수로 실행 시간 저 하 해소

C 언어에 추가한 기능 인라인 함수(inline function) 함수 중복(function overloading) 함수 호출 대신 함수 코드의 확장 삽입 함수 중복(function overloading) 매개 변수의 개수나 타입이 다른 동일한 이름의 함수들 선언 디폴트 매개 변수(default parameter) 매개 변수에 디폴트 값이 전달되도록 함수 선언 참조와 참조 변수(reference) 하나의 변수에 별명을 사용하는 참조 변수 도입 참조에 의한 호출(call-by-reference) 함수 호출 시 참조 전달 new/delete 연산자 동적 메모리 할당/해제를 위해 new와 delete 연산자 도입 연산자 재정의(operator overloading) 기존 C++ 연산자에 새로운 연산 정의 제네릭 함수와 클래스 데이터 타입에 의존하지 않고 일반화시킨 함수나 클래스 작성 가능

C++ 객체 지향 특성 - 캡슐화 캡슐화(Encapsulation) 클래스와 객체 데이터를 캡슐로 싸서 외부의 접근으로부터 보호 C++에서 클래스(class 키워드)로 캡슐 표현 클래스와 객체 클래스 – 객체를 만드는 틀 객체 – 클래스라는 틀에서 생겨난 실체 객체(object), 실체(instance)는 같은 뜻 객체 생성 클래스 (객체를 정의하는 틀) 객체들 - 실체 class Circle { private: int radius; // 반지름 값 public: Circle(int r) { radius = r; } double getArea() { return 3.14*radius*radius; } }; 멤버들 원을 추상화한 Circle 클래스 원 객체들(실체)

C++ 객체 지향 특성 - 상속성 객체 지향 상속(Inheritance) C++ 상속 자식이 부모의 유전자를 물려 받는 것과 유사 C++ 상속 객체가 자식 클래스의 멤버와 부모 클래스에 선언된 모양 그대로 멤버들을 가지고 탄생 스마트폰

C++ 객체 지향 특성 - 다형성 다형성(Polymorphism) 多形性 하나의 기능이 경우에 따라 다르게 보이거나 다르게 작동하는 현상 연산자 중복, 함수 중복, 함수 재정의(overriding) 2 + 3 --> 5 “남자” + “여자” --> “남자여자” redColor 객체 + blueColor 객체 --> purpleColor 객체 + 연산자 중복 void add(int a, int b) { ... } void add(int a, int b, int c) { ... } void add(int a, double d) { ... } add 함수 중복 함수 재정의(오버라이딩)

C ++ 언어에서 객체 지향을 도입한 목적 소프트웨어 생산성 향상 실세계에 대한 쉬운 모델링 소프트웨어의 생명 주기 단축 문제 해결 필요 기 작성된 코드의 재사용 필요 C++ 클래스 상속 및 객체 재사용으로 해결 실세계에 대한 쉬운 모델링 과거의 소프트웨어 수학 계산이나 통계 처리에 편리한 절차 지향 언어가 적합 현대의 소프트웨어 물체 혹은 객체의 상호 작용에 대한 묘사가 필요 실세계는 객체로 구성된 세계 객체를 중심으로 하는 객체 지향 언어 적합

절차 지향 프로그래밍과 객체 지향 프로그래밍 실행하고자 하는 절차대로 일련의 명령어 나열. 흐름도를 설계하고 흐름도에 따라 프로그램 작성 객체들을 정의하고, 객체들의 상호 관계, 상호 작용으로 구현

STL(Standard Template Library) C++와 제네릭 프로그래밍 제네릭 함수와 제네릭 클래스 제네릭 함수(generic function) 동일한 프로그램 코드에 다양한 데이터 타입을 적용할 수 있게 일반 화 시킨 함수 제네릭 클래스(generic class) 동일한 프로그램 코드에 다양한 데이터 타입을 적용할 수 있게 일반 화 시킨 클래스 template 키워드로 선언 템플릿 함수 혹은 템플릿 클래스라고도 부름 Java, C# 등 다른 언어에도 동일한 개념 있음 제네릭 프로그래밍(generic programming) 제네릭 함수와 제네릭 클래스를 활용하여 프로그램을 작성하는 새로운 프로그래밍 패러다임 점점 중요성이 높아지고 있음 STL(Standard Template Library)

C++ 언어의 아킬레스 C++ 언어는 C 언어와의 호환성 추구 장점 단점 기존에 개발된 C 프로그램 코드 활용 캡슐화의 원칙이 무너짐 C++에서 전역 변수와 전역 함수를 사용할 수 밖에 없음 부작용(side effect) 발생 염려

C++ 프로그램 개발 과정 Hello ......... C++ 라이브러리 cout << C++ 소스 프로그램 작성 010100000100010101001111010110101010010111010101 #include <iostream> int main() { std::cout << "Hello"; return 0; } _main,12# $<<01010 00000111 _Hello001 컴파일 링킹 실행 오류 발생 목적 파일 (hello.obj) 소스 파일 (hello.cpp) 실행 파일 (hello.exe) 디버깅 오류 수정

C++ 프로그램 작성 및 컴파일 편집 컴파일 C++ 소스 프로그램은 텍스트 파일 C++ 소스 프로그램의 표준 확장자는 .cpp 어떠한 텍스트 편집기로도 편집이 가능 C++ 소스 프로그램의 표준 확장자는 .cpp C++ 통합 개발 소프트웨어(IDE) 이용 추천 C++ 소스 편집, 컴파일, 링킹, 실행, 디버깅 등 모든 단계 통합 지원 대표적인 소프트웨어 - Visual Studio C++ 10.0, 11/14/17 컴파일 C++ 소스 프로그램을 기계어를 가진 목적 파일로 변환 cpp 파일을 obj 파일로 변환

1 #include <iostream> 2 3 int main() { _main PROC ; COMDAT ; 3 : int main() { 00000 55 push ebp 00001 8b ec mov ebp, esp 00003 81 ec c0 00 00 00 sub esp, 192 ; 000000c0H 00009 53 push ebx 0000a 56 push esi 0000b 57 push edi 0000c 8d bd 40 ff ff ff lea edi, DWORD PTR [ebp-192] 00012 b9 30 00 00 00 mov ecx, 48 ; 00000030H 00017 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 0001c f3 ab rep stosd ; 4 : std::cout << "Hello"; 0001e 68 00 00 00 00 push OFFSET ??_C@_05COLMCDPH@Hello?$AA@ 00023 a1 00 00 00 00 mov eax, DWORD PTR __imp_?cout@std@@3V?$basic_ostream@DU?$ 00028 50 push eax 00029 e8 00 00 00 00 call ??$?6U?$char_traits@D@std@@YAAAV?$basic_ostream@DU?$ 0002e 83 c4 08 add esp, 8 ; 5 : return 0; 00031 33 c0 xor eax, eax ; 6 : } 00033 5f pop edi 00034 5e pop esi 00035 5b pop ebx 00036 81 c4 c0 00 00 00 add esp, 192 ; 000000c0H 0003c 3b ec cmp ebp, esp 0003e e8 00 00 00 00 call __RTC_CheckEsp 00043 8b e5 mov esp, ebp 00045 5d pop ebp 00046 c3 ret 0 _main ENDP 어셈블리어 코드 int main(){ 라인을 컴파일한 기계어 코드 1 #include <iostream> 2 3 int main() { 4 std::cout << “Hello”; 5 return 0; 6 }

링킹 링킹 목적 파일끼리 합쳐 실행 파일을 만드는 과정 목적 파일은 바로 실행할 수 없음 목적 파일과 C++ 표준 라이브러리의 함수 연결, 실행 파일을 만드 는 과정 hello.obj + cout 객체 + << 연산자 함수 => hello.exe를 만듬 hello.obj 표준 C++ 라이브러리 hello.exe << << 링킹 cout cout

프로그램 실행과 디버깅 실행 파일은 독립적으로 바로 실행 가능 실행 중에 발생하는 오류 디버깅 원하는 결과가 나오지 않거나 실행 중에 프로그램의 비정상 종료 디버깅 실행 중에 발생한 오류를 찾는 과정 디버거 디버깅을 도와주는 프로그램 컴파일러를 만드는 회사에서 함께 공급 소스 레벨 디버깅 C++ 소스를 한 라인씩 실행하고 변수 값의 변화를 보면서 오류 발견 Visual Studio는 소스 레벨 디버깅 지원

C++ 표준 라이브러리 C++ 표준 라이브러리는 3 개의 그룹으로 구분 C++ 표준 라이브러리 C 라이브러리 콘솔 및 파일 입출력을 위한 라이브러리 C++ STL 라이브러리 제네릭 프로그래밍을 지원하기 위해 템플릿 라이브러리 STL 라이브러리 C 라이브러리 C++ 입출력 라이브러리 C++ 표준 라이브러리

Visual Studio 10.0 시작

C:\C++\chap1\Hello 폴더가 생긴다. 프로젝트 만들기 프로젝트 이름 C:\C++\chap1 폴더를 생성한다. C:\C++\chap1\Hello 폴더가 생긴다. 솔루션 위치

생성된 프로젝트에 대한 확인 창

Win32 응용프로그램 마법사 체크해야 함

Hello 프로젝트 생성 후

새 항목 만드는 메뉴 선택

hello.cpp 소스 파일 생성 코드 선택 C++ 소스 파일 이름 입력 hello.cpp가 생기는 폴더

hello.cpp 파일이 생성된 초기 모습 빈 hello.cpp 파일 생성

hello.cpp 작성 프로그램 작성

솔루션 탐색기에서 컴파일 메뉴 선택 hello.cpp 컴파일, 컴파일만 수행

Hello 프로젝트의 빌드로 Hello.exe 생성

Link 시 오류? Sol.1 : visual studio Service pack 1 설치 <매니페스트포함> No 설정

Ctrl+F5(디버깅하지 않고 실행하기 메뉴)로 실행할 때 빌드를 묻는 창 소스가 수정되어 빌드되지 않은 상태에서, 실행을 요청하는 경우에 출력되는 창

Hello 프로젝트가 실행되는 화면 Hello 프로젝트 빌드 성공. Hello.exe 생성

오류 메시지의 분석 1> hello.cpp 1>c:\documents and settings\kiu\my documents\visual studio 2010\projects\firstprogram\firstprogram\hello.cpp(6): error C2065: ‘sss’ : 선언되지 않은 식별자입니다. 1> 1>빌드하지 못했습니다. 1>경과 시간: 00:00:00.31 ========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========

같은 솔루션 내에 다른 프로젝트 생성

<프로젝트>-<시작프로젝트로 설정>

CD 수록