-
전북대 C++프로그래밍 강의 1(1-3)DSP/C++ 2024. 4. 19. 09:38
좋은 강의를 공유해주신 김형기 교수님께 무한 감사를 드리고 완강 기원하며
강의소개
강의 초반부의 목표
메모리 레이아웃과 명렁어에 의한 메모리 변화 이해 + 디버거를 사용한 관찰 방법을 배운다!
질문) 아래 명령문을 실행하면 어떻게 될까요?
int a = 10;X a라는 정수형 변수를 10으로 초기화하여 생성한다 O 스택 메모리의 어떤주소(e.g, 0x1000)에 4 바이트 메모리가 할당되고 10이라는 값이 저장된다.
해당주소에 a라는 이름이 붙는다.

역시 교수님 선경지명 클라스 오짐 "나는 다 이해했으니 안해봐도 됨ㅋ" ,"딱보니까 이렇게 되겠네" 학기내내 ㅇㅈㄹ해서
사망년인대 1학년 수업듣는 나레기 클라스....^,ㅠ
1.Intro & Variable - (1) Compile and Linking
- 빌드 프로세스
- 오류 종류
- 신탁스
- 프로그래밍 언어: 고수준의 소스 코드 작성에 사용, human-readable
- .cpp 소스 코드/.h헤더 파일의 편집기
- 오브젝트 코드: Machine-readable,컴퓨터가 실행 할 수 있는 코드
- 컴파일러:소스코드를 오브젝트 코드로 변환하는 도구
- 링커:오브젝트 코드를 실행 파일(exe)로 변환하는 도구
- 테스트&디버깅:프로그램에 존재하는 오류를 찾고, 수정함
- IDE(Intergrated Development Environment)->통합 개발 환경
- 텍스트 에디터+컴파일러+링커+(디버거)
C++ Build Process


1.Intro & Variable - (2) Build Process and Errors

내가 작성한 cpp파일이 오브젝트 파일로 변환되었다는 뜻.
실행이 가능한 exe파일로 변환하려면 링(linking)을 해줘야하는데 비쥬얼스튜디오에선 링킹이 따로 있진않고 빌드를 통해서 컴파일과 링킹을 동시에 수행.
Ctrl+F7 / Build 버튼

저 주소로 들어가면 프로그램 실행됨
그치만 실행창이 실험 후 사라짐
F5
컴파일/링킹/실행을 진행함
프로그램을 실행해도 창이 닫히지않음
Ctrl+F5 기능은 정확히 뭘 하는건지 알기 전에는 그냥 사용하지 마세요!

문법적 오류
"가 안닫힘
의미 오류
data type이 다름
문법적 오류
세미콜론이 빠짐


에러 리스트보다는 아웃풋 확인을 추천
Syntax error:missing ';'
문법적 오류,세미콜론 빠짐이라고 적혀있음
의미 오류
data type이 다름
Compiler Warnings
코드에 잠재적인 문제가 있을 것으로 예상될 때
빌드는 가능하지만, 무시하면 안됨!
Linker Errors / Runtime Errors
링크에러
- obj파일의 링크 과정에서 오류가 있을 경우
- 주로 라이브러리 또는 obj 파일을 (어떤 이유에서)찾을 수 없을 경우
런타임 에러
- 프로그램의 실행 도중 발생하는 오류
- Dividied by zero, file not found, out of memory, etc...
- 프로그램의 crash
- 예외 처리를 통해 문제 발생에 따르는 처리를 할 수 있음
Logical Errors(가장 많이 만날 에러)
- 프로그램의 동작에 관한 논리적 오류
- 프로그램 작성자의 실수가 원인
- 테스트 과정을 통해 찾아내고, 수정해야 함
if(age>19) { std::cout<<"you can vote!"; }20살부터 가능한대 19살로 잘못적음
프로그램은 잘 돌아가겠지만 문제가 있음
그러므로 테스트를 해야함
1.Intro & Variable - (3) Basic Components
C++Keyword, Identifier, Operator

키워드는 예약어인듯
식별자는 변수, 함수 이름
C++ preprocessor
전처리기
- 컴파일 이전에 처리됨
- #으로 시작

#include?
단순한 복사 붙여넣기
프로젝트 속성->c/c++->전처리기->파일로 전처리를 통해 확인


주석
//,/**/
main() function
- 모든 c++ 프로그램으 하나의 main함수를 가져야 함
- 프로그램의 진입점: 프로그램이 실행되면 가장 먼저 실행되는 함수
- 리턴값 0이 올바른 프로그램 실행을 의미함(지금은 생략해도 무방)

한 프로젝트에 main함수가 두개 이상 있으면 오류남
C++ namespace
- std::cout
- 충돌 방지를 위함
- 외부 라이브러리와 구현한 소스 코드간의 이름 충돌 가능성
- 코드의 "그룹화"로 이해
- 서로 다르 namespace로 그룹화하여 충돌을 방지할 수 있음
- "::":scope resolution operator
#include<iostream> void function() { std::cout << "function 2"; } void function() { std::cout << "function 2"; } int main() { return 0; }같은 이름의 fucntion 함수가 2개가 있으므로 에러 뜸
#include<iostream> namespace A { void function() { std::cout << "function 1"; } } namespace B { void function(){ std::cout << "function 2"; } } int main() { A::function(); }namespace로 분리해서 실행가능
Using namespace
- 특정 namespace 내의 함수들을 사용하겠다는 선언
- 남용은 금물
- Using namespace를 모든 코드에 넣는다면 namespace 기능을 상실함
- 강의 자료에는 코드의 단축 표현을 위해 사용

Basic I/O
- cout과 <<
- c++의 표준 출력 스트림, 삽입 연산자
- cin과>>
- c++의 표준 입력 스트림, 추출 연산

int main() { int age = 38; float height = 180.7; std::cout << "my age is " << age << " Hello. "<< std::endl; std::cout << "my height is " << height; }'DSP > C++' 카테고리의 다른 글
전북대 C++프로그래밍 강의 1(4-6) (0) 2024.04.21