안녕하세요 EnIaC 입니다.


사실 C언어 카테고리는 없었고 C++ 만 있었는데 학교에서 C언어 과정이 있어서 그냥 정리 겸 만들어 봤습니다. 오늘은 C언어에 대해 알아보고 본격적으로 코딩을 하기에 앞서 준비하는 단계 입니다. 사실 여러 프로그래밍 언어를 공부하다 보면 C언어 문법과 유사한 언어를 많이 보실 수 있습니다. 그 이유는 C언어에서 파생된 언어들이 많기 때문이죠.

이렇게 C언어라는 프로그래밍 언어를 하나 배우시게 되면 다른 언어를 배우시거나 갈아타실때 C언어를 공부하지 않은 사람보다 더 빨리 이해하여 적응이 가능합니다.


우선 C언어로 작성된 코드를 실제로 작동시키기 위해서는 '컴파일러' 라는 중간 역할 프로그램이 필요합니다. 컴파일러란, 일종의 번역기라고 이해하시면 좋을 것 같습니다.

예를 들어 한국인이 한국말로 중국인에게 말한다면 중국인은 한국말을 사용하지 않기 때문에 알아듣지 못합니다. 따라서 중간에 통역사가 있어야 중국인이 이해할 수 있습니다. 한국어을 중국으로, 중국어를 한국어로 바꾸어 서로 의사소통이 가능케 합니다.


컴파일러도 마찬가지라고 보시면 됩니다. 우리가 배우는 C언어는 컴퓨터에서 바로 이해하지 못하기 때문에 컴파일러라는 프로그램을 이용하여 컴퓨터가 이해할 수 있는 '기계어' 로 변환 시켜 주어야 합니다. 컴퓨터는 0과 1밖엔 모르므로 컴파일러가 바로 우리가 작성한 소스코드를 0과 1로 바꾸어 컴퓨터에게 알려주고 컴퓨터는 곧 코더가 원하는 작동을 하게 되는 것 입니다.


[그림 1. 컴파일 과정]


실제 우리가 컴파일을 진행하게 되면 이루어지는 과정을 아주 간단하게 표현한 그림이 바로 [그림 1] 입니다. 우리가 작성한 소스코드가 전처리기 즉, CPU 를 통해 컴파일러로 넘어가서 어셈플러 즉, 기계어로 변환된 후 링커를 통해 컴파일 되는 과정입니다.


통역사가 한명만 있는게 아닌 여러명이 있는 것 처럼 컴파일러 또한 하나만 있는게 아닙니다.

굉장히 여러 제품들이 있으며 그중 대표적인 몇개만 추려 나열해 보도록 하겠습니다.


1. Microsoft Visual C++ Express

: MS 사에서 무료로 배포하는 C++ 컴파일러 입니다. C++ 언어는 C언어를 확장시키고 객체지향으로 바뀐 언어지만 기존의 C언어로 작성된 소스코드 역시 컴파일이 가능합니다.


[그림 2. Visual C++ Express 2008]


2. Microsoft Visual Studio Series

: MS 사에서 유/무료로 배포하는 통합 컴파일러 입니다. 커뮤니티 버전은 무료로 사용이 가능하며, 학생용 버전은 자신이 학생임을 인증하면 사용이 가능합니다. 이 외에도 엔터프라이즈(기업용) 버전과, 얼티메이트(최종) 버전 등 여러 버전으로 나뉩니다. 이 통함 컴파일러는 단순히 C언어만 컴파일이 가능한게 아니고 C++, C# 등 수많은 언어들을 컴파일 할 수 있기에 '통합 컴파일러' 라고 부릅니다.


[그림 2-1. Visual Studio 2013]


3. Dev C++

: GCC 를 Win32 플랫폼으로 이식한 컴파일러 패키지인 MinGW 에 대한 GUI 통합 개발 환경입니다. 모두 오픈소스를 기반으로 하기 때문에 자유롬게 무료로 사용이 가능합니다. 단, 본 카테고리에서는 Visual Studio 프로그램을 사용 하므로 설정에 대한 부분은 직접적으로 언급드리지 못하는 점 양해 바랍니다.


[그림 2-2. Dev C++ 4.9.9.2]


4. GCC

: GCC 란, GNU Compiler Collection 의 약자로써 GNU 기반 즉, 리눅스 계열의 OS에서 컴파일을 하기 위해 만들어진 C언어 컴파일러 (GNU C Compiler) 였으나, 현재에는 여러 언어가 추가되어 GNU Compiler Collection 으로 이름을 바꾸게 되었다. 현재 지원하는 언어는 C, C++, Objective-C, Fortran, Java, Ada 등이 있다고 합니다. 이미 GCC 는 3번 Dev C++ 에서 언급이 있었는데 GCC 또한 GNU 라이센스를 따르므로 오픈소스화 되어있다. 따라서 Dev C++ 에 사용될 수 있었던 것이다.


[그림 2-3. GCC CLI]


* GCC 의 경우 리눅스에서 사용하므로 GUI 환경이 아닌 CLI 환경에서 작동합니다. 따라서 명령어로 작성해야 하는데요, gcc 라는 명령어 뒤에 -를 붙이고 옵션을 주면 해당 옵션을 따라 컴파일 하게 됩니다. 위 [그림 2-3] 에서는 gcc -v 라는 명령어가 입력되어 있습니다.



다음에는 C언어를 통해 직접 컴파일 해보고 프로그램을 만들어보도록 하겠습니다.


감사합니다.


WRITTEN BY
EnIaC
WhiteHackerGroup 『LockDown』 EnIaC 입니다.

,