본문 바로가기

study/C

C언어 시작하기_C(2)

0. main()과 헤더파일의 중요성

1. main() 에 대하여

2. 헤더 파일

 

 

0. main()과 헤더파일의 중요성

main()과 헤더파일 둘 중 하나라도 C언어코드에 없으면 프로그램이 작동하지 않는다.

이 내용을 반드시 숙지하고 아래에서 main() 함수와 헤더파일에 대해서 알아보겠다.

 

1. main() 에 대하여

C 언어에서 main() 함수는 프로그램의 시작점이자 진입점(entry point)으로서, 프로그램이 실행될 때 가장 먼저 호출되는 함수이다.

모든 C 프로그램에반드시 하나의 main() 함수가 존재해야 하며, 이 함수의 형태와 역할을 이해하는 것이 C 언어 학습의 기본이다.

 

한 마디로 정리하자면 main() 이 없는 C프로그램은 작동하지 않는다.

쉽게 비유하자면 입구 없는 미로를 만들어 놓은 것과 다름이 없다고 볼 수 있겠다.

 

main()
{
    함수 1();
    함수 2();
    여러가지 문법;
}

 

 

위의 코드가 바로 main() 함수의 모양이다.

 

(1) main() 함수의 역할

  • 프로그램의 시작점: 운영체제는 프로그램을 실행할 때 main() 함수를 호출하여 프로그램의 실행을 시작한다.
  • 프로그램의 종료 지점: main() 함수가 종료되면 프로그램의 실행도 종료된다.
  • 반환값을 통해 종료 상태 전달: main() 함수는 정수형 값을 반환하며, 이를 통해 프로그램의 종료 상태를 운영체제에 전달한다.

 

 

헤더파일은 내가 이 소스코드에서 사용할 다양한 라이브러리의 함수들을 선언해주는 것이다.

여기서 선언의 의미를 이해하기란 어려우니 쉽게 표현하자면

 

헤더파일은 컴파일러에게

'내가 이 소스코드에서 사용할 함수 이름은 printf이고,

이 함수는 매개변수(인자)를 이러이러한 형태로 받을 것이고,

반환값은 이러이러한 자료형으로 나타날거야'

라고 말해주는 것이다.

 

 

(선언에 대해서는 다음에 따로 다루도록 하겠다. 그만큼 중요한 내용이다.)

 

 

왜 이렇게(헤더파일 사용) 해주냐고 묻는다면

헤더 파일을 사용하는 이유는 컴파일러가 미리 함수나 변수의 모양을 알고 있어야 코드를 효율적으로 컴파일할 수 있기 때문이다.

헤더 파일이 없으면, 컴파일러는 다른 파일에 있는 함수나 변수가 존재하는지, 올바르게 호출되고 있는지 확인할 방법이 없다.

컴파일을 하기 전에 함수나 변수의 존재 여부와 사용 방법을 확인하기 위해 헤더 파일을 사용하는 것이다.

 

이해를 돕기 위해 코드를 구현하며 확인해보자.

아래와 같이 c2.c 파일을 생성하였다.

 

 

이 상태로 컴파일을 해보겠다.

 

 

오류가 발생했다!

 

c2.c:2:5: error: call to undeclared library function 'printf' with type 'int (const char *, ...)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    2 |     printf("hello world");
      |     ^
c2.c:2:5: note: include the header <stdio.h> or explicitly provide a declaration for 'printf'
1 error generated.

 

읽어보니 선언되지 않은 함수 'printf' 를 호출하고 있어서 생긴 오류라고 한다.

그러면서 c2.c 파일의 2번째 줄 5번째 글자를 참고하라고 하며

include <stdio.h> 를 해주거나 'printf' 에 대한 선언을 제공하라고 한다.

 

그러면 include <stdio.h> 도 해보고 'printf'에 대한 선언도 제공해보자.

(1) include

#include <stdio.h> 를 멘 첫줄에 적어주면 된다.

헤더 파일이니 머리에 작성한다고 생각하면 쉽다.

 

c2파일도 잘 실행되고 hello world도 잘 출력되었다.

(뒤에 % 가 붙어있는데 이 부분은 나중에 차근차근 알아보겠다. 답을 주자면 \n 을 사용해보라.)

 

(2) printf 선언해주기

이 부분은 사실 헤더파일이 해야하는 역할을 대신 하는 거라고 보면 된다.

 

마찬가지로 잘 출력되는 것을 볼 수 있다.

 

 

중요한 것은 헤더파일이 없다면(내가 사용할 함수에 대한 선언이라는 것이 없다면) 그 파일은 컴파일되지 않는다는 것이다.

*선언은 나중에 따로 다루도록 하겠으니 일단은 넘어가도록 한다.

반응형

'study > C' 카테고리의 다른 글

C언어 문법 printf_C(3)  (2) 2024.10.07
C언어 시작하기_C(1)  (6) 2024.09.20