본문 바로가기
개발자 일지/기타

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

by 네빌링 2023. 4. 7.
반응형

-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파일로 변환한다.

 

 

실행파일과 원시파일 형태

 

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

반응형