본문 바로가기

1:1 개발 공부

C 언어의 특징 - C를 배우기 전 알아야할 것들 (1)

1) C 언어는 한국어처럼 애매한 표현이 없습니다. Yes or No 로 나누어져 있습니다. OMR, 바코드와 같이 중간은 존재하지 않는다.

2) 컴퓨터는 정직하기 때문에, 잘못된 프로그램이란 것을 알아채지 못합니다. "정밀한 프로그램을 작성할 수 있는 프로그래머가 되겠다."라는 생각 필수!

3) 계산기로 계산할 수 없는 것은 프로그램으로도 만들 수 없다

4) C언어는 모든 사물과 현상을 숫자로 표현하는 프로그램 언어이다.

5) C프로그램은 1개의 main + 굉장히 많은 서브 루틴으로 이루어져있다.

   => 메인 루틴도 서브 루틴도 모두 함수로 정의된다!

6) 매번 같은 내용을 입력해야 할 때 사용하는 것이 바로 preprocessor이다. 전처리 기능이라 부른다.

    ex ) stdio.h, math.h

 => 컴파일러가 일을 하기 전에 먼저 처리하는 프로그램 / 컴파일러는 전처리기의 처리 결과인 소스를 컴파일 한다

  => (1) 특정 부분에 특정 파일을 삽입 (#include)

       (2) 특정 문자열을 특정 문자열로 치환 (#define)

       (3) 조건에 맞춰 특정 행을 삭제하거나 삽입 (#ifdef #else #end)

 

넓은 의미의 컴파일러, 컴파일러이 과정이다.

전 처리가 된 후, 컴파일을 실행해야합니다. 컴파일은 컴퓨터가 이해할 수 있는 기계어로 번역한다는 의미이죠. 번역을 하기 전의 C 프로그램을 소스 프로그램 , 번역 된 기계어로 된 프로그램을 오브젝트 프로그램이라고 합니다!

 

7) 컴파일의 좁은 의미와 넓은 의미

  => 좁은 의미 : 소스 프로그램, 즉 번역 하기 전의 프로그램에서 어셈블리 언어로 된 프로그램을 만드는 처리

               어셈블리 언어는 기계어로 가기 전 단계라고 보면 됩니다. 소스 프로그램 -> 어셈블리어 -> 기계어

               이런 순으로 간다고 보면 될 것 같습니다.

= > 넓은 의미 : 오브젝트, 즉 기계어로 번역된 프로그램을 만드는데 필요한 프리 프로세스(전처리) 좁은 의미의 컴파일,

                     어셈블, 링크를 모두 포함한 의미입니다. 빌드라고도 부릅니다.

라이브러리에서 참조하여 진행하는 링크 처리 과정

8) 링크 처리  : 기계어로 변환이 되어도 실행하기 위해서는 링크가 필요합니다. 만들어져 있는 라이브러리를 자신의 프

                       로그램에 추가해하는 것을 링크라고 합니다.

9) 크로스 컴파일 : 프로그램을 입력해서 컴파일을 하는 컴퓨터와 직접 실행되는 컴퓨터가 다른 경우가 있습니다. 이럴

                       경우, pc 및 워크 스테이션에서 프로그램 텍스트 작성 및 컴파일을 한 후, 해당 기기에 프로그램을 로

                       드한 후 실행해야 합니다.

10) 디버그 :  프로그램 내에서 버그가 있는 부분을 찾아내어 수정하는 작업을 디버그라고 합니다.

11) 처리계 의존 : 처리계란, C프로그램을 컴파일할 때 컴파일러 및 이용하는 라이브러리, 프로그램을 실행하는 하드웨어

                       의 모두를 가리키는 언어입니다. 처리계 의존은 프로그램을 컴파일 및 실행하는 컴파일러, 라이브러리,

                       하드웨어에 따라 처리 결과가 다르다는 의미입니다. 동일한 C 프로그램이라 해도 컴파일러나 하드웨

                       어가 다르며 동작이 달라질 수 있습니다.