C언어 1일차

정혜창·2024년 12월 13일

독학

목록 보기
1/28
post-thumbnail

부트 캠프 C++ 프로그래밍의 강의에 앞서서 나의 부족한 공부를 채우고, 앞으로 공부에 도움이 되고자 C언어를 공부하기로 결심했다. 사전캠프가 2주전에 시작되고 틈틈히 유튜브, 웹서핑을 통해 간간히 공부를 했지만 정리가 되지 않고 항상 배열, 포인트 부분에서 공부가 집중이 안되고 무너질 때가 있어서 찬찬히 들여보고 공략하고자 오늘 도서관에 달려가서 '혼자 공부하는 C언어 - 서현우 지음' 책을 빌려왔다. 비록 본 캠프까지 3일밖에 남지 않았지만 그전까지 최선을 다해서 독파 해보고자 한다.

그에 앞서 배운 것을 복습하고, 시간이 지났을 때 필요한 정보를 꺼내보고자 블로그에 하루 공부내용을 정리하고자 한다. 화이팅

프로그래밍 언어란

컴퓨터는 정확한 명령만 실행할 수 있는데 컴퓨터가 이해할 수 있는, 정확한 표현의 규칙을 정의해 놓은 것이 프로그래밍 언어이다.

프로그래밍 언어는 용도에 따라 다양한 종류가 있다. (C, C++, JAVA, PYTON etc...)
C 언어는 프로그래밍 언어 중 하나.

C 언어의 장점

  1. 시스템 프로그래밍이 가능. 하드웨어를 제어하는 것이 가능하다.
  2. 이식성을 갖춘 프로그램 만들 수 있다. 기종이 다른 컴퓨터에서도 올바르게 작동하는 성질을 가진다.
  3. 함수를 사용해 개별 프로그래밍이 가능하다.

공부내용

프로그램 ={소스파일(int main()...)} --컴파일--> {실행 파일(01001101..)} = 일의 순서를 나열한 것.
C언어의 소스파일은 말그대로 C언어로 작성한 문서이다. 이것을 기계어로 바꾸는 과정을 '컴파일'

확장자 이름 main.c (C언어 문법) main.cpp (C++ 문법적용)

#include <stdio.h> // standard input output . header 파일을 추가하는 지시

int main(void) // main이라는 함수 선언. main 함수는 프로그램 작성 시 함수들(기능들)을 수행하기 위한 시작점이다.
{
	print("Be happy!"); // "Be happy" 를 출력해. 
    
    return 0; // 0을 반환합니다. = 프로그램을 정상적으로 종료합니다.
}

여기서 //는 주석을 의미하는 것으로 코드에 대한 설명을 첨언하는 것이다. 주석문은 코드가 실행되는 것에 전혀 영향을 주지 않는다.
아직까지 void가 무엇인지 의문이 남아있지만 후에 알아가보자.
빌드는 소스코드를 실행할 수 있는 상태로 만드는 일을 말한다.
이에 따라 컴파일에 실패하면 마찬가지로 빌드가 되지 않는다.
컴파일에 실패하면 에러 메세지를 표시하고, 빌드를 하기 위해선 에러를 수정해아 한다. 에러를 수정하는 것을 '디버깅' 이라고 한다. 이렇듯 컴파일러인 비주얼 스튜디오에서 ctrl+f5로 실행 가능하지만 우리는 실행 파일을 찾아서 직접 실행할 수 있다. 우리가 처음 지정했던 프로젝트의 폴더 경로에 컴파일을 하게 되면 Debug 폴더가 생기는데 여기안에 프로젝트명과 같은 이름으로 실행 파일이 저장된다. 하지만 위의 코드로 만든 실행 파일은 순식간에 창이 닫힌다. 이렇게 수정해보자


#include <stdio.h>
#include <stdlib.n> // 추가한 지시 (뒤에 배울 것이므로 현재는 의미를 몰라도 된다.)

int main(void)
{
	print("Be happy!");
    system("pause"); // 추가한 코드. 시스템 명령을 수행하는 함수 큰따옴표 안의 시스템에서 지원하는 명령을 실행한다.
    
    return 0;
}

비주얼 스튜디오에서 컴파일 과정을 자세히 살펴보면 3단계로 나눠진다. '전처리 - 컴파일 - 링크'

  1. 전처리
    전처리 과정은 전처리 지시자에 따라 소스 파일을 가공하는 과정을 말한다. 앞의 예제 코드 에서의 #include가 전처리 지시자. 보통 #include는 프로그램에 필요한 함수 중 외부에 있는 함수를 불러들인다.

  2. 컴파일
    전처리가 끝난 파일을 컴파일 하게 되면 개체 파일(object file)이 된다. 개체 파일은 CPU가 해석할 수 있는 명령어들로 이루어진 기계어 파일이다. But! 바로 실행하는 것은 불가능하다. 프로그램은 운영체제(os = 윈도우, 리눅스, 안드로이드 등 오퍼레이트 시스템)에 의해 실행되므로 개체 파일을 설치된 운영체제가 인식할 수 있는 형태의 '실행 파일'로 바꿔야 한다.

  3. 링크
    따라서 개체 파일에 startup code 를 결합하는 과정을 수행하는데 이 과정을 '링크' 라고 한다. startup code는 프로그램을 실행하기 전에 필요한 준비작업을 수행하며 main 함수를 호출해 우리가 작성한 프로그램의 코드가 실행되도록 한다. 그래서 프로그램에는 항상 main 함수가 있어야 한다.

빌드는 컴파일 + 링크 라고 볼 수 있다.









profile
Unreal 1기

0개의 댓글