
비주얼 스튜디오가 기본 제공하는 소스 코드는 위와 같이 생겼다. 이 상태에서 F5 버튼을 누르면 비주얼 스튜디오는 다음과 같은 일을 해준다.
1. 소스 코드에 전처리, 컴파일링, 어셈블링, 링킹을 해서 실행 파일을 생성한다.
2. 생성된 실행 파일을 실행한다.
이제 기본 제공 소스 코드가 어떤 의미를 갖고 있는지 간단하게 분석해보자.
주석
위 소스 코드에서 초록 글씨로 표시된 부분을 주석이라고 한다. 주석은 // 또는 /* */ 기호를 사용해서 만들 수 있다. 주석 처리된 부분은 실행 파일에 포함되지 않는다. 정확히 말하자면 전처리를 할 때 전부 삭제된다.
즉, 전처리를 통해 주석이 전부 지워지고 나면 위의 코드는 아래와 같이 변경된다.
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
}
#include <iostream>
#include <iostream>은 'iostream이라는 파일의 내용을 그대로 가져와서 복붙하겠다'는 의미를 갖고 있다.

위와 같이 iostream에 커서를 올려놓은 상태로 ctrl+shift+g를 눌러보자.

위와 같은 소스 코드가 화면에 나타난다. 이 소스 코드가 곧 iostream이다. 따라서 전처리가 동작하고 나면 기본 제공 코드는 다음과 같이 변하게 된다.
// iostream standard header
// Copyright (c) Microsoft Corporation.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#ifndef _IOSTREAM_
#define _IOSTREAM_
#include <yvals_core.h>
#if _STL_COMPILER_PREPROCESSOR
#include <istream>
#pragma pack(push, _CRT_PACKING)
#pragma warning(push, _STL_WARNING_LEVEL)
...
int main()
{
std::cout << "Hello World!\n";
}
위의 복잡한 코드가 기본 제공 코드에 포함되면서 std::cout이라는 콘솔 출력 기능을 사용할 수 있게 되는 것이다.
여기서 전처리는 '컴파일 이전'에 수행되는 동작을 말한다. 전처리 과정은 전처리기가 담당하게 되며, 구체적으로 코드에 대해 설명하는 주석을 제거하는 작업과 #include, #define과 같은 구문을 소스 코드로 치환하는 작업을 해준다.
main 함수
int main() {
}
위와 같은 문법으로 작성된 구문을 함수라고 부른다. 함수는 프로그램이 어떤 행동을 하게끔 만들기 위해 사용한다. 예를 들어, Fight라는 함수를 만들면 프로그램에 '싸운다'라는 행동을 포함시킬 수 있게 된다.
위 구문에서 'main'은 함수의 이름이 된다. 그리고 이름이 main인 함수는 특별한 역할을 한다. 바로 프로그램의 진입점이라는 역할이다.

한 번 main 함수의 이름을 maintest로 바꾸고 실행해보자. 빌드 오류가 발생하면서 실행 파일이 생성되지 않는다. 컴파일러는 소스 코드를 컴파일 할 때 가장 먼저 main 함수를 찾는다. 이 때 우리가 main 함수의 이름을 maintest로 바꾸었기 때문에 컴파일러는 main 함수를 찾지 못하게 된다. main 함수가 없다면 어떤 명령부터 실행해야 할지 결정할 수 없기 때문에 컴파일러는 실행 파일을 만들 수가 없다.
'프로그래밍 언어 > C·C++' 카테고리의 다른 글
[C++] 2. Visual Studio 사용해보기 (0) | 2023.12.12 |
---|---|
[C++] 1. 왜 게임 업계에서는 C++을 쓰는 걸까? (0) | 2023.12.12 |
Array에 대한 몇 가지 사실 (0) | 2022.06.25 |
const and pointer (0) | 2022.06.25 |
선언이란? (feat. Array and Pointer) (0) | 2022.06.25 |