[c++] C++ 프로그램의 Entry Point

About_work·2024년 10월 16일
0

c++

목록 보기
9/17

정리

  • ./calculator를 실행하면 main 함수가 자동으로 실행되는 이유는 C++에서 main이 진입점(entry point) 으로 지정된 함수이기 때문
  • 컴파일러와 운영체제는 이 규칙을 따르기 때문에, 컴파일 후 생성된 실행 파일이 항상 main 함수에서부터 시작하게 돼.

1. C++ 프로그램의 진입점 (Entry Point)

  • 모든 C++ 프로그램은 main 함수진입점(entry point) 으로 사용해.
  • 운영체제(터미널)가 프로그램을 실행하면, 제일 먼저 main 함수가 호출돼.
  • main 함수는 프로그램의 시작과 끝을 정의하는 함수라고 생각하면 돼.

2. 컴파일과 실행 파일 생성 과정

2.1 컴파일 (Compilation)

  • C++ 코드를 컴파일하면, 각 소스 파일(main.cpp, Calculator.cpp 등)이 목표 파일(object file) 로 변환돼.
    • main.cppmain.o
    • Calculator.cppCalculator.o
  • 이때, 컴파일러는 main.cpp에 정의된 main 함수가 프로그램의 진입점이라는 사실을 알고 컴파일을 진행해.

2.2 링크 (Linking)

  • 모든 목표 파일들을 묶어 하나의 실행 파일(calculator)로 만드는 작업을 링크(Linking) 라고 해.
  • 이 과정에서 컴파일러는 main 함수를 진입점으로 지정해, 실행 파일이 만들어질 때 main 함수에서부터 프로그램이 시작하도록 한다.

3. 프로그램 실행 원리

  1. 터미널에서 ./calculator 를 입력하면 운영체제는 calculator라는 실행 파일을 메모리에 로드해.
  2. 실행 파일에 main 함수가 진입점으로 설정되어 있기 때문에, main 함수의 첫 줄부터 코드가 실행되기 시작해.
./calculator

이 명령은 운영체제가 실행 파일의 진입점(main 함수) 으로 점프하게 하고, 거기서부터 프로그램이 시작돼.


4. main 함수만 특별할까?

  • C++ 표준에 따라, main 함수는 반드시 있어야 하는 함수로 정의돼 있어.
  • 만약 main 함수가 없으면, 컴파일러는 컴파일 과정에서 "undefined reference to main" 오류를 발생시켜.
  • 즉, C++ 프로그램에서는 반드시 main 함수를 포함해야 하고, 이 함수는 운영체제와 컴파일러가 약속한 진입점으로 작동하는 거야.
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글