첫 C 프로그램 설명

첫 C 프로그램 설명

지난 시간 GCC 컴파일러를 설치하고 가장 간단한 hello world 예시를 만들었습니다. 이번 시간에는 이 예시를 한 줄씩 분석해 보겠습니다. 먼저 코드는 아래와 같습니다.

#include <stdio.h>

int main()
{
    printf("hello, world\n");
    return 0;
}
Code language: Arduino (arduino)

코드는 매우 간단하며 한 줄 텍스트를 출력하는 기능입니다.

이제 위에서 아래로 한 줄씩 코드를 분석하겠습니다.

1. #include <stdio.h>

지난 수업에서 전처리에 대해 간략히 언급했는데, 여기 첫 번째 코드가 바로 전처리 명령어입니다. 어떻게 구분할까요? 맨 앞의 # 기호가 표시입니다.

# : 전처리 명령 표시자로, 전처리기에 전달돼 컴파일의 첫 단계에서 실행됩니다.

include : 헤더 파일 불러오기 키워드로, 지정된 파일 안의 모든 코드를 현재 프로그램에 복사하는 역할입니다.

<stdio.h> : 표준 입출력 헤더 파일(standard input output). 화면 출력, 키보드 입력 등 입출력 관련 함수들이 담겨 있으며 아래에서 사용하는 printf 함수가 이 파일 안에 정의되어 있습니다.

엄밀히 말하면 전처리는 C 언어 자체 문법에 포함되지 않습니다. C 언어 전처리는 C 핵심 문법의 일부가 아니며, 컴파일러가 정식 컴파일 전에 별도로 실행하는 단계입니다. 전체 컴파일 과정의 한 고리일 뿐 C 언어 본래의 문법·의미 체계에 속하지 않는 처리입니다.

쉽게 설명하면 별도 전처리 프로그램이 문자 치환 작업을 진행합니다. #include <stdio.h>는 stdio.h 파일 전체 내용을 이 줄에 복사하고 원본 한 줄을 통째로 교체합니다. 가정으로 stdio.h 안에 AAAAAAAAA만 적혀있다고 가정해 보겠습니다.

그러면 컴파일러에 전달되기 전 코드가 아래처럼 변합니다.

 AAAAAAAAA

int main()
{
    printf("hello, world\n");
    return 0;
}
Code language: Arduino (arduino)

물론 이건 가상의 예시이고 실제 헤더 파일은 복잡한 내용으로 채워져 있습니다. 관심 있는 학생은 직접 파일을 열어 내용을 확인해 보세요.

이 헤더 파일은 컴퓨터 안에 저장되어 있으며 운영체제마다 저장 경로가 다릅니다.

Linux/Unix 시스템: 보통 /usr/include/stdio.h

Windows (Visual Studio): VC/include/stdio.h

macOS (Xcode): /Applications/Xcode.app/.../usr/include/stdio.h

컴퓨터 검색 도구를 이용해 실제 파일 위치를 찾아볼 수 있습니다.

이제 전컴파일에 대한 기본 개념이 잡혔을 겁니까?

만약 #include <stdio.h> 줄을 지우면 컴파일러가 printf를 인식하지 못하고 오류를 내뱉습니다. 직접 이 줄을 삭제한 뒤 gcc로 컴파일해서 결과를 확인해 보세요.

헤더 파일을 삭제한 모습

다시 컴파일하면 오류 메시지가 출력됩니다

2. int main()

main = C 언어 프로그램 진입점 함수

  1. 어떤 C 프로그램을 실행하든 운영체제가 자동으로 main 함수부터 실행을 시작하며, 프로그램에 main 함수는 딱 하나만 존재해야 합니다.
  2. int : 함수의 반환값 자료형으로 정수(integer)를 의미합니다.