1. C 프로그래밍 속으로
1.3 나의 첫 C 프로그래밍 Hello, World 출력하기
#include <stdio.h>
main(){
printf("Hello, World");
}
stdio.h은 h(헤더)라는 이름의 확장자를 가진 파일이다. stdio는 Standard input/output을 의미한다. #include는 이런 헤더 파일을 자신이 작성하고 있는 코드에 포함한다는 의미로 이해해도 된다. 헤더 파일명을 작성해주는 이유는 바로 아래의 printf라는 명령어들을 라이브러리에서 가져오는 것처럼 쉽게 사용하기 위해서다. C언어에서 이런 명령어들을 쉽게 사용할 수 있는 이유는 이 헤더 파일 안에 명령어들의 기능을 누군가 만들어뒀기 때문이다.
1.4 컴파일과 실행: 프로그램의 일생
컴퓨터는 많은 사람들이 똑똑하다고 알고 있다. 하지만 이는 정확히 이야기하면 기능이 엄청나게 빨라서 똑똑해 보이는 것이다. 컴퓨터는 인간의 언어를 이해할만큼 똑똑하지 못하다(?). 컴퓨터는 기계어만 오직 이해할 수 있기 때문이다. 그리하여 인간이 그나마 이해할 수 있는 언어로 작성되어 있는 소스 코드로부터 기계어로 번역하는 것을 개발자들이 만들게 되었는데 이런 과정을 컴파일이라고 한다.
인간의 언어(소스 코드) -> (컴파일) -> 기계어
우리가 사용하는 Visual studio 같은 IDE를 사용해 소스코드를 생성하면 .c 확장자로 파일이 만들어진다. 이를 컴파일하게 되면 기계어로 번경되어 목적 파일(object file)이 생성된다. 확장자는 .obj이다. 이때 기계어로 만들어진 목적파일은 링크(연결) 과정을 거칩니다. 이것은 내가 작성한 소스 코드에 헤더 파일을 연결한다는 의미입니다. 이후 내 프로그램에 싣는 로더 과정까지 거치고 나면 비로소 소스 코드는 실행될 준비를 모두 갖춘 상태가 됩니다. 그 다음 파일 확장자가 .exe 실행 파일이 생성되고, 소스 코드의 수행 결과가 화면에 출력되게 된다.
위 코드를 보면 printf 명령어 뒤에 세미 콜론(;)이 붙어 있는데 C언어에서는 이것을 꼭 문장의 끝에 붙여줘야 한다. 그래야 컴퓨터가 이곳이 문장의 끝이구나를 인식하게 된다. 컴퓨터가 소스 코드의 의미를 정확하게 판단하지 못한다는 말은 곧 컴파일 과정에서 정확하게 기계어로 번역하지 못했음을 의미한다. 그리고 기계어로 번역하지 못했다는 것은 컴퓨터가 요구하는 언어의 문법이나 규칙이 틀렸다는 것이다.
'C언어' 카테고리의 다른 글
[혼자 공부하는 C언어] 새롭게 시작하는 c언어 정리 210816 (0) | 2021.08.17 |
---|---|
[모두의 C언어] <2장> 3주 동안 C언어 부시기 요약(7월 1일~7월 21일) (0) | 2021.07.16 |
[모두의 C언어] 210702 C언어 공부 (0) | 2021.07.02 |
[모두의 C언어] 프로그래머로서의 메모리에 대한 자세 (0) | 2021.07.02 |
[모두의 C언어] 2.9 변수 사용 시 주의점 (0) | 2021.07.01 |