9. 버전 관리 시스템(Version Control System)
• 무언가 잘못되었을 때 복구를 돕기 위하여
• 프로젝트 진행 중 과거의 어떤 시점으로 돌아갈 수 있게 하기 위하여
• 여러사람이 같은 프로젝트에 참여할 경우, 각자가 수정한 부분을 팀원 전체가
동기화하는 과정을 자동화하기 위하여
• 소스 코드의 변경 사항을 추적하기 위하여
• 소스 코드에서 누가 수정했는지 추적하기 위하여
• 대규모 수정 작업을 더욱 안전하게 진행하기 위하여
• 가지내기(Branch)로 프로젝트에 영향을 최소화 하면서 새로운 부분을 개발하기
위하여
• 접붙이기(Merge)로 검증이 끝난 후 새로이 개발된 부분을 본류(trunk)에 합치기
위하여
• 많은 오픈 소스 프로젝트에서 어떠한 형태로든 버전 관리를 사용하고 있으므로
• 코드의 특정 부분이 왜 그렇게 쓰여 졌는지 의미를 추적하기 위하여
10. 1. C/C++은 어떻게 발전을 했는가?
2. VS에서는 디버깅과 컴파일을 어떻게 하는가?
3. 버전 관리 시스템이란 무엇인가?
4. 컴파일 과정은 어떻게 되는가?
5. 함수는 어떤 구조로 되어 있는가?
6. 표준 출력은 어떻게 하는가?
1주차 – Hello, World!
11. 컴파일 과정(Compile Procedure)
디버깅(Debugging)
프로그램 상의 버그를 잡는 행위
레퍼런스 사이트
https://msdn.microsoft.com/ko-kr/library/cscc687y.aspx
http://ko.cppreference.com/w/c
http://forum.falinux.com/zbxe/index.php?mid=C_LIB
22. Casting
to convert a value into specific type
(type)variable
type(variable)
Safe
It’s safe to convert small size type into large size type
- Integer to Integer(Promotion)
- Integer to Floating point number
23. Casting
Unsafe(narrowing)
It’s not safe to convert large size type into small size type
- Integer to Integer
- Signed to Unsigned
- Floating point number to Integer
to convert a value into specific type
(type)variable
type(variable)
39. Enumeration
Rule
• 중복된 상수 값이 포함될 수 있다
• 열거형 목록의 식별자는 표시 유형이 같은 동일한 범위에 있는
다른 식별자(다른 열거형 목록의 일반 변수 이름 및 식별자 포함)와
구별되어야 한다
• 첫번째 값을 지정하지 않으면, 0을 할당한다.
• 다음 값을 지정하지 않으면 이전 값에 +1이 된 값을 할당한다.
A set of named integer
enum tag{ TAG_INT, TAG_INT2, TAG_INT3 };
컴퓨터(compute + er)는 본래 어원에서 알 수 있다시피 고속 계산을 위한 용도로 발전되었다. 현대 컴퓨터의 개념을 최초로 제시한 이는 찰스 배비지였는데, 그는 오늘날의 컴퓨터와 개념적으로 같은 기계인 해석기관을 설계하였다. 후에 천공카드 시스템이 개발되어 프로그래밍을 이용하게 된다.
프로그래밍 언어는 컴퓨터와 의사소통할 수 있는 언어이다. 가장 원시적인 언어는 기계어이며, 이에 대응하는 어셈블리어, 그리고 고급 수준 프로그래밍 언어인 코볼, 포트란, C 등이 나왔다.
버전 관리 시스템이란 파일의 변화를 시간에 따라 기록하여 과거 특정 시점의 버전을 다시 불러올 수 있는 시스템이다. 즉, 어제 했던 내용으로 돌릴 수 있는 시스템이다. 중앙 집중 시스템과 분산 버전 관리 시스템으로 나뉘며, 여러가지 종류가 있다.
버전 관리 시스템이란 파일의 변화를 시간에 따라 기록하여 과거 특정 시점의 버전을 다시 불러올 수 있는 시스템이다. 즉, 어제 했던 내용으로 돌릴 수 있는 시스템이다. 중앙 집중 시스템과 분산 버전 관리 시스템으로 나뉘며, 여러가지 종류가 있다.
그럼 정확히 컴파일이 어떻게 일어나는지 알아보자. 컴파일러(compiler)는 우리가 작성한 소스 코드를 컴퓨터가 읽을 수 있는 형태로 번역(compile)한다. 여기서는 main.cpp이 컴파일 될 것이다. 그리고, 링커(linker)가 각 소스코드 간의 의존성을 파악하고, 결합하는 역할을 한다. 그렇게 최종적으로 실행 파일이 나오게 된다.
이 같은 것을 주석이라고 한다. 컴퓨터는 컴파일 시 주석을 무시한다. 주석은 프로그래머에게 코드 내면에 숨겨져 있는 것을 설명하는 데 아주 유용하게 쓰인다. 이와 같은 스타일 말고도 /* */을 이용한 주석도 있다.
#include는 전처리기 지시어이며, 전처리기란, 컴파일 전에 실행되는 것들을 말한다. 단어를 보면 알 수 있듯 무언가를 포함하게 하는 것인데, 헤더 파일을 포함한다. 헤더(header) 파일은 소스 코드 파일의 일종으로 함수, 형의 선언들이 들어가 있다. <>는 라이브러리 헤더를 포함하는 것이다.
변수란? RAM
왜 초기화하는 습관을 들어야 하냐면 이 쓰레기값을 행여나 어디서 읽게 되면 프로그램이 미정의 동작(undefined behavior)을 일으키게 되기 때문이다. 변수 사용시엔 꼭 초기화하자. Lvalue, rvalue
C는 데니스 리치가 만든 프로그래밍 언어이다. 어셈블리어로 변환되어 속도가 매우 빠르고, 오늘날 수많은 언어들의 근간이 되는 언어이다. 메모리를 직접 제어할 수 있다는 것이 가장 큰 특징인데, 이로 인해 C언어는 고수준부터 저수준까지 접근할 수 있어 아직도 많이 쓰이는 언어 중 하나이다.C++는 비야네 스트롭스트룹이 C언어에서 파생시켜 만든 언어로서, 객체지향 프로그래밍의 개념이 추가되었다.
static
MSB, 리터럴 접두어, 접미어
변수란? RAM
변수란? RAM
왜 초기화하는 습관을 들어야 하냐면 이 쓰레기값을 행여나 어디서 읽게 되면 프로그램이 미정의 동작(undefined behavior)을 일으키게 되기 때문이다. 변수 사용시엔 꼭 초기화하자. Lvalue, rvalue
왜 초기화하는 습관을 들어야 하냐면 이 쓰레기값을 행여나 어디서 읽게 되면 프로그램이 미정의 동작(undefined behavior)을 일으키게 되기 때문이다. 변수 사용시엔 꼭 초기화하자. Lvalue, rvalue