첫 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 언어 프로그램 진입점 함수
- 어떤 C 프로그램을 실행하든 운영체제가 자동으로
main함수부터 실행을 시작하며, 프로그램에 main 함수는 딱 하나만 존재해야 합니다. int: 함수의 반환값 자료형으로 정수(integer)를 의미합니다.