🎮 1. 오늘 배운 내용
- C++ 소스 파일 → 실행 파일 생성 과정
- 소스 파일 작성 (.cpp)
- 선행처리 (#include, #define 처리)
- 컴파일 (기계어로 변환된 오브젝트 파일 생성)
- 링크 (여러 오브젝트 파일과 라이브러리 결합)
- 실행 파일 생성 (.exe 등)
- Hello, World! 예제
- #include <iostream>: 입출력 기능 제공
- int main() { ... }: 프로그램 시작 지점
- std::cout << "Hello, World!";: 출력
- return 0;: 정상 종료 의미
#include <iostream>
using namespace std;
int main() {
cout <<"Hello, World" << endl;
return 0;
}
// 1. iostream 헤더 파일을 포함합니다.
#include <iostream>
// 2. main 함수를 정의합니다.
int main() {
// 3. 표준 출력 스트림(cout)을 사용해서 "Hello, World!"를 화면에 출력합니다.
std::cout << "Hello, World!" << std::endl;
// 4. 프로그램이 성공적으로 끝났음을 알리기 위해 0을 반환합니다.
return 0;
}
- 헤더 파일 개념
- 특정 기능을 사용하기 위한 설계도 역할
- <iostream>: 입출력, <string>: 문자열, <vector>: 동적 배열, <cmath>: 수학, <random>: 난수 생성
- 프로그램의 목적에 맞춰 필요한 헤더를 선택
- .{} (중괄호)
- 함수 본문: main() 함수처럼, 함수가 시작하고 끝나는 범위를 나타낸다.
int main() { // 여기서부터 main 함수가 시작 // 이 안에 있는 코드가 main 함수에 속함 return 0; } // 여기서 main 함수가 끝남 - 반복문, 조건문: for, if 같은 문법에서 반복하거나 조건이 참일 때 실행할 코드들을 묶을 때 사용한다.
if (조건) { // 조건이 참일 때 실행할 코드 묶음 }
- 함수 본문: main() 함수처럼, 함수가 시작하고 끝나는 범위를 나타낸다.
- ; (세미콜론)
std::cout << "Hello"; // "Hello"를 출력하는 한 문장이 끝남 std::cout << "World"; // "World"를 출력하는 또 다른 한 문장이 끝남- 언제 안 쓰나?: if, for 같은 제어문이나 함수 정의의 마지막 줄, 그리고 중괄호 } 뒤에는 보통 세미콜론을 붙이지 않는다. 중괄호 자체가 코드 블록의 끝을 의미하기 때문.
- std:: (스코프 지정 연산자)
- std::cout: "std 그룹 안에 있는 cout을 사용하겠다"
- std::endl: "std 그룹 안에 있는 endl을 사용하겠다"
- cout과 endl
- cout: Character Output Stream의 약자로, 화면에 데이터를 출력하는 역할을 한다. << 연산자와 함께 사용해서 원하는 데이터를 cout으로 흘려보내면 화면에 나타난다.
std::cout << "출력할 내용"; - endl: End Line의 약자로, 줄바꿈을 해주는 역할을 한다. \n과 비슷한 기능을 하는데, endl은 출력 버퍼를 비워주는 추가적인 기능을 수행한다.
std::cout << "Hello" << std::endl; // Hello를 출력하고 줄을 바꿈 std::cout << "World"; - cout: Character Output Stream의 약자로, 화면에 데이터를 출력하는 역할을 한다. << 연산자와 함께 사용해서 원하는 데이터를 cout으로 흘려보내면 화면에 나타난다.
- 위 코드를 실행하면이렇게 두 줄로 출력됨.
필수적으로 알아야 할 것들
- 변수(Variable)와 자료형(Data Type): 변수는 데이터를 담는 상자, 자료형은 그 상자에 어떤 종류의 데이터(정수, 실수, 문자 등)를 넣을지 결정하는 규칙.
- int: 정수 (10, -5)
- double: 실수 (3.14)
- char: 한 글자 ('A')
- bool: 참/거짓 (true, false)
- std::string: 문자열 ("Hello")
- 연산자(Operator): 변수나 값으로 계산을 하거나 비교를 할 때 사용하는 기호들.
- +, -, *, /: 사칙연산
- ==, !=, >, <: 비교 연산자
- 조건문(Conditional Statement): if, else if, else를 사용해 특정 조건에 따라 다른 코드를 실행하는 문법.
- "만약 (조건)이라면 이 코드를 실행하고, 그렇지 않다면 다른 코드를 실행해라"
- 반복문(Loop): for, while 등을 사용해 특정 코드를 반복해서 실행하는 문법.
- std::는 표준(standard) 라이브러리 안에 있는 기능을 사용하겠다는 뜻. C++에는 수많은 기능이 있는데, 이름이 겹치지 않도록 그룹별로 묶어 관리함. std는 그중에서도 C++ 표준 라이브러리에 속한 기능들을 모아놓은 그룹(네임스페이스)의 이름이다.
- 세미콜론은 한 문장의 끝을 나타낸다. C++ 컴파일러에게 "여기까지가 하나의 명령이야"라고 알려주는 역할. 마치 우리가 문장 끝에 마침표(.)를 찍는 것과 같다고 볼 수 있음.
- 중괄호는 코드의 묶음(블록)을 나타냄. 특정 코드들이 하나의 집단으로 동작해야 할 때 사용.
🌍 2. 나만의 연결점
영화 편집 프로젝트에서도 "소스 → 완성본"까지의 과정이 C++ 빌드 과정과 닮아있다.
- 소스 파일 작성 = 촬영본 촬영
- 선행처리 = 불필요한 장면 정리, 필요한 자료 가져오기
- 컴파일 = 장면별 편집본 제작
- 링크 = 장면들을 하나로 합쳐 영화 완성
- 실행 파일 = 최종 상영 가능한 영화 파일
🧠 3. 깨달음 & 질문 (문제 상황 포함)
- #include가 단순히 "불러오기"가 아니라, 프로그램에서 사용할 수 있는 기능을 준비하는 과정이라는 걸 알았다.
- return 0;가 단순 습관이 아니라, 운영체제와의 약속이라는 점
- 에러: 비주얼 스튜디오에서 .cpp 저장 위치를 잘못 잡아 빌드 오류 발생 → 프로젝트 폴더 구조 이해 필요.
- 질문: C++에서는 사용하지 않는 헤더를 포함해도 괜찮을까? 빌드 시간이나 실행 속도에 영향이 얼마나 있을까?
🧵 4. 연결 태그 (나만의 키워드 해시태그)
#C++ #빌드과정 #실행파일 #헤더파일 #HelloWorld
📌 5. 오늘의 메모 한 줄
각 단계를 이해하면 전체 흐름이 보일것. 꾸준히 익숙하게 만들고 머리에 집어넣자.
ex) a=20; 대입연산자에서 "오른쪽에 있는 걸 왼쪽에 집어넣어라"
🌱 6. 내일을 위한 메모
- <string>, <vector>, <cmath>를 직접 포함해서 간단한 프로그램 작성
- 예제 실습 답 예측하며 작성 따라해보기
- 빌드 에러 발생 시 원인 파악 연습
'C++' 카테고리의 다른 글
| [TIL_C++] 반복문 for, while 기초 (2) | 2025.08.18 |
|---|---|
| [TIL_C++] 선언, 초기화라는 '단어' 그리고 배열의 임의접근 (3) | 2025.08.14 |
| [TIL_C++]진수와 컴파일 그리고 서식 지정자 (3) | 2025.08.12 |
| [TIL_C++/Git] 어색한 C언어 / 자료형 / Git (4) | 2025.08.11 |
| C++ 변수 선언 방법 (0) | 2025.07.28 |