C2009.04.16 00:40


저의 강의는 미엘리키 님의 C++ 필기 노트를 보고 깊은 감명을 받고 시작한 것입니다.
이번 강좌에서는 다음과 같은 내용을 배우게 됩니다.
  • 컴파일러란 무엇인가?
  • 개발 툴 (Visual Studio 2008 Express Edition) 설치
  • 내 생애 최초의 프로그램

신나는 씹어먹는 C 언어 배우기!


안녕하세요 여러분! 씹어먹는 C 언어 강좌에 오신 것을 환영합니다. 여러분이 어떠한 이유로 C 언어를 배우려고 하는지는 모르겠지만 아마 아래 5 가지 이유중의 하나로 생각됩니다.

  • C 언어가 뭔지 궁금해서
  • C 언어를 배우고 있으나 너무나 어려워서 다시 배우려고
  • 게임을 만들어서 학교에 가서 자랑할려고
  • 인터넷에 우연히 C 를 검색했더니 이게 나왔다.
  • 중국어를 C(hinese) 언어 라고 하는 줄 알고 ( ← 이분 들은 뒤로가기 눌러주시기를..)
아무튼 무슨 이유로 든지 당신은 'C 언어가 뭐야'라는 제목을 보고 이 블로그에 찾아온 것입니다. 축하합니다. 제대로 오셨군요.

 

 저는 누구인가요?

 

이 블로그의 주인 Psi 는 누구일까요? 저는 사실 여러분을 가르칠 자격이 없는 학생에 불과 합니다. 저 역시 C 언어를 배우고 있으며 전문가들 보다도 훨씬 못합니다. 전문적인 강의를 원했던 사람은 여기서 다시 살포시 뒤로가기를 눌러도 됩니다. (아마 80% 이상이 누를 것이라 추정) 하지만 제가 유일하게 잘 할 수 있다고 자부하는 것은 어려워만 보이던 C 언어의 기초 부분을 최대한 쉽게 설명하는 것입니다.  (저에 대한 자세한 프로필은 여기를 참조해주세요)

앞으로 저와 함께 C 언어의 세계로 여정을 떠날 사람들은 준비가 되었습니까? 그럼 모두 스크롤을 내려주세요!


   여정에 필요한 준비물
 

C 언어에 세계로 떠나기 위해선 다음과 같은 준비물이 필요합니다.

  1. 컴퓨터 (본체, 키보드, 모니터, 마우스), 블로그를 열어 볼 수 있을 만큼의 충분한 성능의 인터넷, 손가락, 뇌.
  2. 개념
  3. 여정을 헤쳐 나갈 수 있는 용기
  4. 컴파일러.

  1,2,3 번은 여러분들 께서 충분히 준비할 수 있다고 생각합니다.
  그런데 4번, 즉 컴파일러는 뭐지?

 
컴파일러?

컴파일러, 영어로는 Compiler 라고 씁니다. 말그대로 컴파일(Compile) 해주는 것(-r) 입니다. 그렇다면 컴파일은 도대체 무엇일까요?

여러분이 어디선가 들었을 법한 지식에 따르면 컴퓨터는 0 과 1 밖에 모르는 바보(?) 라고 들었을 것입니다. 맞습니다. 컴퓨터의 두뇌라고 할 수 있는 CPU 에서는 수 많은 0 과 1 들이 왔다리 갔다리 하고 있습니다
[각주:1]. 따라서, 우리는 컴퓨터에 지시를 내리기 위해서는 0 과 1 로 가득한 명령을 내려야 한다. 예를들어 화면에 a 를 표시해라는 명령은
10100101110101010111010110011011110010110101011..... 101110 ( 본인도 맞는지 모름 ) 와 같이 써야 하죠.

만약 우리가 이렇게 컴퓨터에 명령을 내린다면 알아보기도 불편할 뿐더러, 중간에 0 으로 쓸 것을 모르고 1 이라 썼을 때, 오류를 찾아 내기도 쉽지 않겠죠. 하지만 다행이도 우리는 그렇게 힘들게 쓸 필요가 없죠.

우리가 구사해야 할 언어 (C 언어) 는 언뜻 보게 되면 0 과 1 로 가득한 숫자가 아니라 영어 단어와 약간의 숫자로 구성된 '고급 언어' 입니다. 따라서, (월등히 지능이 높은) 인간만이 쓸 수 있는 이 고급 언어를 컴퓨터는 쓸 수 없으니 특별히 '컴파일' 이라는 과정을 통해 컴퓨터가 알아 들을 수 있는 기계어로 바꿔주는 것입니다[각주:2].

이제, 컴파일러를 어디서 구할 수 있는지 찾아봅시다. 유명한 컴파일러로는 GCC 를 들 수 있지만 사용법이 초보자들에게는 약간 복잡하므로, 마이크로소프트에서 무료로 배포하는 Visual Studio 2008 Express Edition 을 사용하도록 합니다. 


지금 이 강좌를 보시는 분들은 새로 나온 비주얼 스튜디오 2017 커뮤니티 버전을 사용하시기 바랍니다. 여기를 클릭해서 따라 가시기 바랍니다. 설치 후에 아래 '키보드 괴롭히기' 로 넘어가 주시기 바랍니다.


2008 버전을 이용하지 않고 새로나온 2010 버전을 사용하고픈 분들은 여기를 클릭해서 들어가서 따라가기 바랍니다. 참고로 입력해야 할 이 강좌 아래에 나와 있는 것과 동일합니다


http://www.microsoft.com/exPress/download/#webInstall

여러분은 위의 링크된 곳으로 가서 쭉 스크롤바를 내려 보면 오른쪽에 황금빛으로 'Microsoft Visual Studio 2008 Express Edition' 이라고 써 있는 것이 보일 것이다. 영어에 자신이 있다면 영문판을, 한글의 우수함을 세계에 알리고 싶다면 한글판을 다운받도록 합니다.

재 본인의 컴퓨터에서는 Visual Studio 2008 professional 버전이 이미 깔려 있어서 설치가 잘 되지 않습니다 (물론 서비스 팩을 깔아주면 되지만 귀찮아서..) 여러분들은 아래의 사이트에서 위 프로그램을 설치하는 법을 보고 꼭 설치 해주기 바랍니다. (좋은 팁을 올려주신 블로그 주인 셀룬 님에게 감사의 말을 전하고 싶습니다)

http://blog.naver.com/chingdsa?Redirect=Log&logNo=10040847103 

  설치가 완료 되었으면, 이제 그 프로그램을 실행해 봅시다.


Visual C++ 2008 을 설치했을 때 나오는 페이지


  여러분은 프로그램 실행시 위와 같은 화면을 보게 될 것입니다. 이제, 상단의 파일 → 새로 만들기 → 프로젝트 를 들어가거나, Ctrl + Shift + N 을 눌러서 '새 프로젝트' 를 시작합시다. 그렇다면 아래와 같은 화면을 보게 됩니다.

프로젝트 형식에서 Win32 를 누르고, Win32 콘솔 응용 프로그램을 선택한 다음 이름에 Helloworld 를 입력합니다.


이제, 좌측 '프로젝트 형식' 의 Win 32 를 누르면 위와 같이 나오게 되는데, 여기서 빨간색 박스로 쳐져 있는 'Win 32 콘솔 응용 프로그램' 을 선택한 후, 아래 이름에 'Helloworld' 라고 입력합니다.

다음 을 누르시고..


그 다음 위와 같은 화면이 나온다면 '다음' 을 누릅니다.

빈 프로젝트에 체크하기


그 다음에, 추가 옵션 부분의 '빈 프로젝트' 에 체크를 하신 후 마침을 누른다면 프로젝트 설정은 끝납니다.

왼쪽에 보시면 소스 파일 폴더가 있는데, 마우스 클릭을 한 뒤 오른쪽 클릭, 추가, 새 항목으로 들어갑니다


이제, 좌측의 '솔루션 탐색기' 의 '소스 파일' 에 마우스 오른쪽 클릭을 하신 후, 추가로 들어가서 '새 항목' 을 선택합니다. 그렇다면 아래와 같은 창을 보게 되죠.

C++ 파일을 선택하시고 이름에 helloworld.c 를 입력합니다.


  이제, C++ 파일 을 선택하신 후, 하단의 이름에 helloworld.c 라고 적습니다. (그냥 helloworld 로 하시면 안됩니다) 우리는 C 언어를 공부하는데 왜 C++ 파일로 하냐고 물을 수 있는데, 확장자가 .c 이므로, Visual Studio 가 C 언어로 파일로 인식하지 C++ 파일로 인식하지 않으므로 걱정 안하셔도 됩니다.


 

 키보드 괴롭히기  

 

  
이제, 드디어 키보드를 괴롭힐 시간이 다가왔습니다. 모처럼 위의 프로그램을 오랜 시간 기다리면서 설치 했는데 뭐라도 해 보는 것이 좋겠죠?
 

화면에 다음과 같이 입력합니다.

#include <stdio.h>
int main( )
{
printf("Hello, World! \n");
        return 0;
}

  한 가지 당부 드리고 싶은 말은, 반드시 손으로 직접 입력해 보기 바랍니다. 그냥 Ctrl - C, Ctrl - V 하는 것은 시간은 절약되지만 결국 나중에 머리에 남는 것은 없게 됩니다.


  이제, 위 내용을 다 입력하였으면 F7 를 눌러 주어서, 또는 상단의 빌드 → 솔루션 빌드를 눌러서 컴파일 합니다. 만약 위 내용을 잘 써서 성공적으로 빌드 되었다면 아래 아래와 같은 화면을 보게 될 것입니다.

컴파일 하는 중입니다.


그런데, 간혹 가다 어떤 사람들은 오류가 뜨는 사람들도 있는데, 대표적으로

error C2143: 구문 오류 : ';'이(가) 'return' 앞에 없습니다


라 던지,

error C2001: 상수에 줄 바꿈 문자가 있습니다.
error C2143: 구문 오류 : ')'이(가) 'return' 앞에 없습니다.

와 같은 오류를 보게 되는 사람들이 있습니다.
  첫 번째의 경우, printf("Hello, World! \n") 다음에 세미 콜론 (;) 을 쓰지 않아서 나타나는 경우이고, 두 번째의 오류는 printf 안에 큰 따옴표로 제대로 닫지 않았을 경우이다. 즉, 오류가 나왔는데 위에서 언급한 경우가 아니라도 십중 팔구 위의 소스 코드를 잘못 쳤기 때문 이므로 다시 한 번 신중히 쳐보거나, 그래도 안되면 복사해 보시기 바랍니다.

  이제, 드디어 이렇게 완성된 프로그램을 실행할 시간이 다가왔습니다. Ctrl + F5 를 눌러서 프로그램을 실행해 봅시다.

Hello, World! 가 출력되었습니다.


만세! 현재 저는 영문판 XP 를 쓰고 있어서 Hello, World! 밑에 'Press any key to continue' 가 나오겠지만 (참고로 이 강좌는 2008년에 제작되었습니다) 한글판 사용자 분들은 '아무 키나 누르세요' 가 나올 것입니다. 어쨋든, 위의 Hello, World! 가 출력되었으면 대 성 공 입니다.

  여러분은 지금, 여러분 최초의 프로그램을 만들게 된 것입니다!

  다음 강좌에서는, 위 프로그램이 도대체 어떻게 동작하는 것인지에 대해 알아보도록 합시다.




강좌를 보다가 조금이라도 궁금한 것이나 이상한 점이 있다면 꼭 댓글을 남겨주시기 바랍니다. 그 외에도 강좌에 관련된 것이라면 어떠한 것도 질문해 주셔도 상관 없습니다. 생각해 볼 문제도 정 모르겠다면 댓글을 달아주세요.

현재 여러분이 보신 강좌는 <<씹어먹는 C 언어 - <1. C 언어가 뭐야?>>> 입니다. 이번 강좌의 모든 예제들의 코드를 보지 않고 짤 수준까지 강좌를 읽어 보시기 전까지 다음 강좌로 넘어가지 말아주세요


  1. 0 과 1은 on 과 off 에 대응된다. 이 때, IBM PC 의 경우 on 은 5 V, off 는 0V 의 전압과 같다. [본문으로]
  2. 물론 C 언어를 어디서 배운 사람이라면 '사기치지 마' 라고 말할 수 있습니다. 맞습니다. 사실 컴파일은 소스 코드를 어셈블리 코드로 바꿔주는 것이죠. 그 후, 어셈블러(Assembler) 가 다시 이를 목적 코드(Object Code) 로 바꾼 후, 링커(Linker) 가 링킹(Linking) 을 통해 완전한 Exe 파일을 만드는 것이죠. 하지만 솔직히, 어셈블리어가 기계어에 1 대 1 대응 되어 있으므로, 거의 기계어라 봐도 무방합니다. [본문으로]


Posted by Psi

댓글을 달아 주세요

  1. 이전 댓글 더보기
  2. 컴퓨터에 visual 어쩌고를 받으려고 하는데 마이크로소프트 정식 홈페이지에 들어가면 화면에 스토어 등등 이런 글자만 뜨고 홈페이지가 안나와요

    2016.02.20 21:02 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. 아하하핳

    모래성을 쌓는 기분이어서 다시 처음부터 보게 됬어요ㅜㅜ
    단시간에 다 볼려니
    머리 터지겠어요ㅋㅋㅋㅋㅋ
    강좌 감사합니다^^

    2016.05.13 00:17 신고 [ ADDR : EDIT/ DEL : REPLY ]
  4. 1213

    지금 맥북 사용하고있는데... 맥에서 할수 있는 방법이 있나요?

    2016.06.23 12:36 신고 [ ADDR : EDIT/ DEL : REPLY ]
  5. 1213

    만약 맥을 사용하고 있다면 어떤 컴파일러를 사용해야 되나요?

    2016.06.23 12:43 신고 [ ADDR : EDIT/ DEL : REPLY ]
  6. ELLA

    감사감사 고맙습니다. 첫수업 성공해서 넘 기뻐요

    2016.08.17 16:34 신고 [ ADDR : EDIT/ DEL : REPLY ]
  7. 하이요

    정주행해요! 1학기 학교 공부를 등져서 다시 공부를 늦게나마 해보는데 큰 도움이되요

    2016.08.24 21:41 신고 [ ADDR : EDIT/ DEL : REPLY ]
  8. 비밀댓글입니다

    2016.08.31 21:54 [ ADDR : EDIT/ DEL : REPLY ]
  9. 알려주세요

    혹시 비주얼 스튜디오 2015 익스프레스에서 하여도 따라오는데 문제가 없을까요?
    윈도우 10 사용자라 최대한 높은버전을 사용하고싶은데, 궁금합니다

    2016.10.21 23:04 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 비주얼 스튜디오 2017 커뮤니티 버전으로 업데이트 하였습니다!

      2017.03.30 23:26 신고 [ ADDR : EDIT/ DEL ]
  10. jjangbo

    컴파일 실행하면 다음과 같은 문구가 뜨는데 어떻게 해결해야할지 모르겠어요..

    c1 : fatal error C1083: Cannot open source file: 'bbb.c': No such file or directory

    2017.01.04 14:21 신고 [ ADDR : EDIT/ DEL : REPLY ]
  11. deny1020

    재미있게 잘보았습니다.

    2017.01.25 13:13 신고 [ ADDR : EDIT/ DEL : REPLY ]
  12. diget91

    선생님! 친절하게 알려주시는 강의 잘보고있습니다
    첫장부터 막혀서 여쭤보게되는데 오류가 이렇게뜹니다
    선생님이 올려주신 소스 그대로 복붙했는데도 안되네요
    혹시 뭐가문제일까요??

    1>------ 빌드 시작: 프로젝트: helloworld2.c, 구성: Debug Win32 ------
    1> helloworld.c
    1>LINK : fatal error LNK1123: COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다.
    ========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========

    2017.03.24 18:35 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • https://www.microsoft.com/ko-kr/download/details.aspx?id=23691

      여기서 서비스팩 1 을 설치하세요

      2017.03.30 23:26 신고 [ ADDR : EDIT/ DEL ]
  13. 초보

    1>------ 빌드 시작: 프로젝트: ConsoleApplication1, 구성: Debug Win32 ------
    1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Platforms\Win32\PlatformToolsets\v141\Toolset.targets(34,5): error MSB8036: Windows SDK 버전 8.1을(를) 찾을 수 없습니다. 필요한 버전의 Windows SDK를 설치하거나, 솔루션을 마우스 오른쪽 단추로 클릭하고 [솔루션 대상 변경]을 선택하거나 프로젝트 속성 페이지에서 SDK 버전을 변경하세요.
    1>"ConsoleApplication1.vcxproj" 프로젝트를 빌드했습니다. - 실패
    ========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========

    이 문제는 어떻게 해결해야하나요?

    2017.04.17 11:42 신고 [ ADDR : EDIT/ DEL : REPLY ]
  14. 123123k

    이게 바뀌어서 "stdafx.h"
    로바뀌어졌더군요

    2017.08.19 12:21 신고 [ ADDR : EDIT/ DEL : REPLY ]
  15. 백지은

    안녕하세요. 이렇게 알려주셔서 감사합니다. 다름이 아니라 다 알아는 듣겠는데 제가 프로그램을 돌리니까 안들아 가서요ㅜㅜㅜ복붙을해도 자꾸 이상한게 뜹니다. 이건 왜그런지 알려주세요. 감사합니다
    심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태
    오류 C1010 미리 컴파일된 헤더를 찾는 동안 예기치 않은 파일의 끝이 나타났습니다. '#include "stdafx.h"'을(를) 소스에 추가하시겠습니까? ConsoleApplication2 c:\users\administrator.pc-20150926rrih\source\repos\consoleapplication2\consoleapplication2\소스.c 8

    2017.09.28 23:38 신고 [ ADDR : EDIT/ DEL : REPLY ]
  16. 개인 비공개 블로그에 퍼가겠습니다~^^ 나중에 볼 때 쉽게 찾아보려구요^^ 출처도 남기겠습니다!!

    2017.10.22 16:42 신고 [ ADDR : EDIT/ DEL : REPLY ]
  17. ㅎㅁㅎㅁ

    이제 시작해보려하는데 프로그램이 너무달라요 ㅠㅠㅠㅠㅜㅠㅜㅠ 그냥그대로해도되겠죠..?

    2017.10.24 23:37 신고 [ ADDR : EDIT/ DEL : REPLY ]
  18. gaga8871

    미리 컴파일된 헤더를 찾는 동안 예기치 않은 파일의 끝이 나타났습니다. '#include "stdafx.h"'을(를) 소스에 추가하시겠습니까

    직접 치든 복사하든 이런 오류가 자꾸 뜨네요 ㅠ

    2017.12.13 15:02 신고 [ ADDR : EDIT/ DEL : REPLY ]
  19. gaga8871

    c언어 아는 친구한테 물어봐서 알아왔습니다. 위에 저랑 비슷한 현상으로 댓글다신분들 보셨으면 좋겠네요.
    프로젝트 만드실때 빈프로젝트로 만들기를 체크 안하셨거나 그 체크하는 창 자체가 안 떴으면 그럴겁니다.
    체크하는 창이 뜬다면 체크하시고 안 뜨신다면 헤더파일 다 제거하시고 프로젝트 속성>C/C++>미리 컴파일된 헤더에서 사용안함 선택해주세요(체크 못했어도 빈프로젝트로 만드는 과정이라고 생각되네요)

    2017.12.13 17:11 신고 [ ADDR : EDIT/ DEL : REPLY ]
  20. 이무무

    콘솔창이 바로꺼지시는분들!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    https://blog.bsk.im/2013/10/24/visual-studio-console-remained/

    위 링크 참고하세요!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    2018.02.07 00:54 신고 [ ADDR : EDIT/ DEL : REPLY ]
  21. 소금이네

    이제 첫편을 봤지만 감사히 잘 보겠습니다^^ 끝까지~~~요*^^*

    2018.06.16 22:42 신고 [ ADDR : EDIT/ DEL : REPLY ]