brunch

You can make anything
by writing

C.S.Lewis

by 아무나 Mar 17. 2019

C언어를 배워보자 - 2. 컴파일을 해보자

평범한 인문대 졸업 직장인의 프로그래밍 고군분투기

컴파일이 무엇인가? 

코드를 열심히 짜는 이유는 뭐니뭐니 해도 다 짠 코드를 실행해서 즐기기 위함이 아닌가?

코드와 즐기기 사이에 있는 과정이 바로 컴파일이다.


Code → Save → Compile → Execute

코드짜서, 저장하고, 컴파일 후, 실행한다


컴파일을 왜 할까?

우리는 우리말(아니다 영어다)로.. 그러니까 사람의 언어로 코드를 짠다.

하지만 기계는 사실 영어를 할 줄 모른다. 기계는 0과 1밖에 모르는 바보니까.

그러니까 우리가 영어로 열심히 짠 코드를 기계가 읽는 0과 1로 바꾸는 과정이 컴파일이다.


그렇기 때문에 컴파일된 파일을 메모장으로 열어보면 다들 한 번쯤 본 적 있는 꿻뛟뾃캵 같은 언어가 나오는 것이다.

 

바로 이렇게... 컴퓨터는 내심 이런 말을 하고 싶었는지 모른다. 




자 그럼 컴파일은 어떻게 하는 건지 한 번 해보자!



1. 컴파일을 하기 위한 파일 실행


hello.cpp라는 파일에 코드를 짰으면

도스 창에 g++ hello.cpp 쳐보자!


 - 컴파일 끝.


참 쉽죠?



2. 컴파일 한 머신 파일을 실행시켜 보자


머신 파일을 실행시키기 위해서는 ./ 을 치고 머신 파일의 이름을 넣으면 된다.

하지만 우리는 아까 따로 이름을 지정 안 하고 그냥 컴파일을 해버렸다. 

그렇다면 컴퓨터가 알아서 이름을 정해버린다. a라고.


그럼 a를 불러와 실행해 보겠다. 실행시킬 때는 나오라고 OUT을 외쳐본다.


./a.out


How are you doin'?



훌륭하다. 나는 또 세상을 향해 안부를 물었다.




3. 실행파일에 특정 이름을 지어주자


아까 컴파일할 생각에 마음이 설레서 g++ 다음에 바로 파일 이름만 넣었더니 컴퓨터가 마음대로 a 라는 이름을 지어버렸다. 하지만 앞으로도 이럴 순 없지. 내 파일의 이름은 내가 정한다!

이를테면 멋지게... 거창하게...! Hello 정도가 어떨까?


g++ hello.cpp -o hello

= g++(generate아니.. 컴파일을 할 거야) hello.cpp(컴파일할 파일은 이거야) -o(오- 참, 이름이 뭔지 알려줄게) hello(그것은 바로 hello)

= 코드를 배우면서 느낀 건데 코드의 어순은 참으로 영어의 그것과 닮았다. 마치, 왈도체 처럼 한국 사람이 처음으로 프로그래밍 언어를 만들었으면 얼마나 좋았을까 ㅠㅠ



마치.. 이런 느낌



어찌 되었거나...


짠- hello.exe 완성!


당연하게도 이 파일을 실행시키기 위해서는 a가 아니라 hello를 실행시켜야 한다.

기억하자 실행은 쩜찍으로 한다. = ./  ← 이거


./hello.out



어떤가... 또 한 번 안부를 물으셨는지.



4. 주석 처리에 관하여 - 별첨


주석은 왜 필요한가 - 상황 1

나는 지금 혼자 코딩 공부를 한다고 코드를 짜고 있다. 하지만 아직 초보인지라 한번 짜 놓고 밥 먹고 오면 "이게 뭐였더라... 할 때가 있다." 그럴 때 필요한 것이 주석이다.


주석은 왜 필요한가 - 상황 2

게임업계에서 일할 때 옆자리 프로그래머 분에게 다른 프로그래머 분이 나타나서는 파일을 어서 놓으라고 쿠키를 주며 협박하는 것을 본적 있다. 그렇다! 프로그래밍 현장에 가게 되면 한 파일을 여러 명이 잡아서 코드를 쓰게 된다. 그렇게 서로의 코드가 엉키다 보면 왜 이렇게 코드를 짜 놓은 것인지 서로의 멱살을 잡을 수 있다. 

그럴 때 왜 이 코드를 짰는지 옆에 예쁘게 주석(이해 가능한 한국말, 사람 말)을 달아 놓으면 치명적인 갈등 상황을 피할 수 있다.(물론 주석을 쓴다고 해도 코드를 괴랄하게 짜면 역시 멱살을 잡힐 수 있다.)


주석을 쓰는 것은 간단하다 // 이렇게 찍찍이를 두 번 쓰면 된다.

//이렇게

방금 이렇게가 주석을 당했다


하지만 길고 장황하게 여러줄에 걸쳐서 내가 코드를 이렇게 짤 수밖에 없었다고는 상황을 설명해야 한다면 /*과 */를 쓰면 된다.

(코드의 세계에서 *별은 모두라는 뜻을 갖는다고 한다)


/*옆자리 플머님께,

미안합니다. 제가 문과 출신이라 아직 코드 실력이 미천하여

가끔 오류가 나거나 무한 루프를 도는 코드를 짤 수도 있습니다.

혹여 이 주석을 보시거든 노여움을 가라앉히시고 한 수 전수해주십시오.


보상 : 커피 사드림*/



어떤가, 컴파일도, 주석도 생각보다 간단하지 않은가!

코드... 할만하지 않나...?


//2화 만에 이런 말 하면 안 될 것 같지만.... 





매거진의 이전글 C언어를 배워보자 - 1. Hello world
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari