C++ 프로그램 빌드
- 컴파일 : 소스 파일을 컴퓨터가 이해할 수 있는 명령으로 번역하는 과정
- 목적 파일: 컴파일러가 하나의 번역 단위를 컴파일한 결과 만들어진 목적 코드를 저장하는 파일
- 라이브러리: 프로그램을 작성할 때 사용할 수 있는 클래스나 값, 함수 등을 모아놓은 것
- 링크 : 목적 파일과 라이브러리를 연결하여 실행 파일을 만드는 작업
- 컴파일과 링크를 통해 실행 파일을 만드는 전 과정 통틀어 프로젝트 빌드란 한다.
C++ 프로그램 기본 구조
#include <iostream>
int main(){
// 표준 출력 스트림으로 문장을 출력
std::cout << "나의 첫 번째 C++ 프로그램" << std::endl;
return 0;
}
- 전처리 지시문
- C++ 소스 프로그램은 컴파일 되기 전에 먼저 전처리 과정을 거친다.
- 전처리는 소스 프로그램을 가공하여 실제로 컴파일러가 번역할 소스 프로그램을 만드는 과정으로, 전처리기가 이 작업을 수행한다.
- 전처리기 지시어: 전처리기가 어떤 작업을 할 것인가를 지시하는 명령
- 전처리기 지시어는 '#'으로 시작하며, 한 행에 한 문장씩 작성한다.
- 다양한 전처리기 지시어
- 헤더 파일을 소스 프로그램에 결합(#include)
- 매크로 선언 및 해제(#define, #undef)
- 조건부 컴파일(#if, #ifdef, #ifndef)
- #include 지시어 사용 형식
- #include < header > : 표준 include 경로에 존재하는 파일
- #include "header" : 현재 위치에 존재하는 파일
- 전처리기 지시어는 한 행에 한 문장씩 작성하며, 전처리기 지시어가 사용된 문장을 전처리 지시문이라 한다.
- 헤더 파일
- 간단한 프로그램이라면 하나의 소스 프로그램 파일에 프로그램을 완성할 수도 있지만 프로그램의 규모가 커지거나 여러 프로그래머가 프로그램을 분담하여 작성할 경우에는 여러 개의 소스 프로그램 파일에 나누어 프로그램을 작성하게 된다.
- 여러 개의 소스 프로그램 파일에 나누어 프로그램을 작성하게 되면, 여러 소스 프로그램 파일에 공통적으로 사용되는 부분이 발생하게 되는데, 각각의 소스 프로그램 파일에 중복하여 작성하면 프로그램 관리가 어려워지고 오류가 발생하기 쉽다.
- C++ 헤더 파일은 이러한 어려움을 개선하기 위해 여러 소스 프로그램 파일에 공통적으로 사용되는 부분을 별도로 작성한 것으로, 보통 '.h'라는 확장자를 사용한다.
- 헤더 파일 작성
// add.cpp
int add(int x, int y){
return x + y;
}
// main.cpp
#include <iostream>
#include "add.h" // add.h 헤더파일 포함
int main()
{
std::cout << "The sum of 3 and 4 is " << add(3,4) << endl
}
// add.h 헤더 파일
// 헤더 가드의 시작
#ifndef ADD_H
#define ADD_H
// .h 파일의 실제 내용: 선언
int add(int x, int y) // add 함수의 원형(function prototype)
// 헤더 가드의 끝
#endif
- 헤더 가드
- 중복 정의 문제
- 헤더파일 중복 가능성 문제를 방지하기 위해 헤더 가드를 사용한다.
#ifndef SOME_UNIQUE_NAME_HERE // 해당 헤더 파일 이름이 이미 정의됐나 확인
#define SOME_UNIQUE_NAME_HERE // 정의가 안 됐다면 해당 헤더 파일 이름 정의
// 선언과 정의
#endif
// math.h
#ifndef MATH_H
#define MATH_H
int num()
{
return 10;
}
#endif
- pragma once
- 최신 컴파일러는 #pragma 지시자를 이용하여 단순한 헤더 가드를 지원한다.
#pragma once
// code
- namespace
- 입출력 스트림
- C++의 iostream 표준 라이브러리를 통해 문자 형태의 입출력을 할 수 있다.
- 스트림은 일련의 데이터 열을 의미한다.
- 표준 출력 스트림 cout은 콘솔 화면에 출력하는 기능을, cin은 키보드를 통해 입력하는 기능을 제공한다.
- cout으로 데이터를 출력할 때는 삽입 연산자 '<<'를 사용한다.
- 삽입 연산자 '<<'는 C++ 프로그램에서 오버로딩된 연산자다.
std::cout << value
- 스트림 입력은 cin에 추출 연산자 '>>'를 사용한다.
- 추출 연산자 '>>' 또한 C++ 프로그램에서 오버로딩된 연산자다.
std::cin >> value
- 문장
- C++ 프로그램은 여러 개의 문장으로 구성된다.
- 하나의 문장은 키워드, 식별자, 연산자, 숫자, 문자, 문자열, 문장 부호, 빈칸 등을 문법에 따라 나열하여 작성한다.
- 하나의 문장의 끝에는 세미콜론(;)을 기입하여 다음 문장과 구별
- 하나의 문장은 한 행에 쓸 수도 있고, 여러 행에 걸쳐서 작성할 수도 있다.
- 또한 한 행에 여러 개의 문장을 나열할 수도 있다.
- 여러 개의 실행 문장을 '{'와 '}' 사이에 나열하여 묶을 수도 있다. 이러한 문장의 그룹을 블록이라고 부른다.
- 블록은 여러 개의 문장을 묶어 하나의 문장처럼 취급하거나 함수의 몸체를 구성하기 위해 사용된다.
- 함수
- 함수는 C++ 프로그램의 가장 기본적인 구성 단위 중 하나
- 함수는 반환할 데이터의 타입과 함수의 이름 등을 나타내는 함수 머리부(header)와 { } 사이에 나열된 문장들로 이루어진 몸체 블록으로 구성된다.
- 주석
- 주석은 프로그램 내에 설명문을 넣은 것
- 주석 형식
// 주석
/*
여러 행 주석
*/