• [C언어]C언어 학습 하려는 이유, c언어 기초 개념 등

    2023. 4. 7.

    by. 웰시코더

    반응형

    -c언어를 학습하려는 이유를 고민한다.

    -c언어의 기초개념들을 간단하게 정리해본다.


    1.C언어 학습 이유

     

    별게 아니라 그냥 궁금한 이유가 제일 크다. 가끔 커뮤니티의 'C언어를 꼭 배워야 하는 이유' 같은 글들이 호기심을 자극한다. 대부분이 굳이 배울 필요 없다이며 특히 지금 자바,스프링을 사용하여 4년 내외로 일을 하고 있으니 더욱 내가 배워야 할 이유가 없는듯하다. 그럼에도 불구하고 이유를 찾아보자면..

     

    • 가끔 C언어로 설명하는 글들을 조금이라도 이해하고 싶다
    • 도대체 왜 필요한지, 필요하지 않은지 내가 직접 체험해봐야 속이 후련할듯하다
    • 가끔 실무와 동떨어진 언어공부로 간헐적인 지루함을 달래본다(더 지루해질 수도 있음)
    • 메모리 구조를 이해하는데 좋다고 하는데 1시간 공부해봐서는 잘 모르겠다
    • 프로그래밍 공부를 한 사람들(특히 전공자)이 얘기하는 포인터같은 어려운 개념을 경험해보고 싶다

     

    그래도 자바와 실무에 필요한 공부 등이 메인이 되고 C는 간간이 진행한다. 또 현실에 부딪히고 귀차니즘 등에 의해 얼마나 공부할진 모르겠지만..

     

     

    2.C언어 관련 개념

     

    1)IDE

    IDE는 VSCODE에 플러그인들을 설치해서 진행했다. 맥OS라서 Visual Studio 제한이 좀 있다고 들어서 VSCODE로 진행했다.

     

    2)기초기념

    C언어 관련 파일들은 원시코드, 목적코드, 실행코드 크게 3가지가 있다.

    • 원시코드 : fileName.c / 휴먼이 작성한 소스코드이고 실행 불가능한 형태
    • 목적코드 : fileName.obj / 컴파일러에 의해 컴파일된 형태
    • 실행코드 : fileName.exe / 실행가능한 파일 형태

    3)컴파일 및 링크단계

    실행가능한 형태까지의 절차는 다음과 같다.

     

    컴파일단계

     

    원시코드를 컴파일러에 의해 목적파일로 바꾸는 단계이다. 우선 소스코드의 헤더파일의 내용을 복사해 임시 파일을 생성하는데 이 단계를 전처리단계라고 한다. 이후 임시파일을 컴파일러가 문법에 맞게 코딩되었는지 검사하고 에러가 없다면 목적코드파일 형태(*.obj)로 생성한다.

     

    링크단계

     

    컴파일을 한 상태에서도 프로그램이 실행되진 않는다. scanf, printf 같은 함수들은 목적파일(*.obj)에 포함되지 않는다. 즉, main함수만 포함되어 있다. scanf, printf같은 함수는 이미 컴파일되어 libc.lib 파일에 기계어로 표현되어 제공된다. 따라서 scanf, printf같은 부분과 기계어로 표현된 main함수등을 하나의 파일로 합쳐야 한다. 이 작업을 링크라고 하고 링커라는 프로그램에 의해 진행된다.

     

    이단계는 *.obj 파일을 *.exe파일로 변환한다.

     

     

    실행파일과 원시파일 형태

     

    내용출처 : 나프잘(이렇게하면 나도 프로그래밍을 잘 만들 수 있다) 책 일부

    반응형

    댓글