공부했던 내용 기록한 곳입니다.
교재 추천
윤성우의 열혈 C++ 프로그래밍
The C++ Programming Language
유튜버 추천
홍정모 교수님 유튜브 채널
The Cherno 유튜브 채널
Summary
빌드 프로세스
오류의 종류
기본 구조, 기능과 용어
… 키워드 / 지시자 / 연산자
… 전처리 지시문
… main()함수
… 주석
… namespace
… 표준 입출력
빌드 프로세스
오브젝트 코드 : Machine-readable, 컴퓨터가 실행할 수 있는 코드
컴파일러 : 소스코드를 오브젝트 코드로 변환하는 도구
링커 : 오브젝트 코드를 실행 파일(exe)로 변환하는 도구
테스트 & 디버깅 : 프로그램에 존재하는 오류를 찾고, 수정
IDE(Integrated Development Environment) → 통합 개발 환경
… 텍스트 에디터 + 컴파일러 + 링커 + (디버거)
오류의 종류
Compiler Error
프로그래밍 언어의 규칙을 위반하는 경우
문법적 오류 → 코드 자체 오류
std::cout << "Errors << std::endl;
return 0;
의미 오류
int a = 5;
string b = "Hello World";
a + b;
Compiler Warnings
코드에 잠재적인 문제가 있을 것으로 예상될 때
빌드는 가능하지만, 무시하면 안됨!
Linker Errors / Runtime Erros
링크 에러
… obj 파일의 링크 과정에서 오류가 있을 경우
… 주로 라이브러리 또는 obj 파일을 (어떤 이유에서) 찾을 수 없는 경우
런타임 에러
…프로그램의 실행 도중 발생하는 오류
…Divided by zero, file not found, out of memory, etc…
…프로그램의 crash
…예외 처리를 통해 문제 발생에 따르는 처리를 할 수 있다.
Logical Errors
…프로그램의 동작에 관한 논리적 오류
…프로그램 작성자의 실수가 원인
…테스트 과정을 통해 찾아내고, 수정해야 함
기본 구조, 기능과 용어
…구성요소 - keyword, identifier, operator
… 전처리기 지시문 - #include, …
… main()함수
… 네임스페이스
… 주석 - //, /* */
… 입출력 - cin, cout
키워드
…… 약 90개의 키워드(변수 타입, if, for등)
…… 언어 자체에서 예약된 단어들
식별자
……변수, 함수, 타입 등 개발자가 지정하는 부분
……대소문자 구분!
연산자
……… +, -, *, >>, <<, ::, …
전처리기
……컴파일 이전에 처리됨
……#으로 시작
…… ex) #include, #ifdef, #pragma,…
#define
……Platform independency, 코드 단축, debug 목적 등으로 활용
주석
……프로그래머가 읽을 수 있는 정보를 제공하기 위함(협업, 유지보수)
main() function
모든 C++ 프로그램은 하나의 main함수를 가져야 함
...프로그램의 진입점 : 프로그램이 실행되면 가장 먼저 실행되는 함수
...리턴값 0이 올바른 프로그램 실해을 의미함(지금은 생략해도 무방)
두가지 버전
int main(){
//code
return 0;
}
>> program.exe
int main(int argc, int *argv[]){
//code
return 0;
}
>> program.exe argument1, argument2
동일 프로젝트에 cpp파일을 계속 추가하여 작성하면 오류 발생
→ 하나의 프로그램에 2개 이상의 main 함수가 존재하기 때문
해결법 1) 솔루션을 우클릭하여 추가 → 새 프로젝트로 별도의 프로젝트를 만들어 사용
→ 이때, 현재 빌드하고자 하는 프로젝트를 우클릭하여 “시작 프로젝트로 설정”필요
해결법 2) 현재 빌드하고자 하는 cpp이외의 코드는 전체 주석처리하고 빌드
namespace
std::cout
충돌 방지를 위함
...외부 라이브러리와 구현한 소스 코드간의 이름 충돌 가능성
코드의 “그룹화”로 이해
…서로 다른 namespace로 그룹화하여 충돌을 방지할 수 있다.
…”::” : scope resolution operator
#include <iostream>
namespace A{
void function(){
std::cout << "Hi 1";
}
}
namespace B{
void function(){
std::cout << "Hi 2";
}
}
int main(){
A::function();
B::function();
};
using namespace
…특정 namespace 내의 함수들을 사용하겠다는 선언
…남용은 금물
using namespace를 모든 코드에 넣는다면 namespace의 기능을 상실
Basic IO
cout << “Hello World”
cin >> “Hello World”
줄바꿈은 필요한 경우 명시해 주어야 함
cout << “My age is” << age << endl;
cout << “My age is” << age << ‘\n’;
'Language > C++' 카테고리의 다른 글
05.포인터 (0) | 2023.12.22 |
---|---|
04.Function (1) | 2023.12.22 |
03.basic-syntax (1) | 2023.12.22 |
02. 변수와 상수 (1) | 2023.12.22 |
C++ 이론편 (0) | 2022.05.22 |
댓글