C & C++/강좌

C강좌 1. Hello World를 출력해 보자!(전처리, 스코프,함수,빌드)

KALILIVE 2020. 10. 27. 23:19
반응형

@읽기전 참고

솔직히 나는 이 글을 읽고 잘 이해가 안되면 다른 블로그를 찾아가는 것을 추천한다.

지금 부터 포스팅 하는 내용은 내 입장에서 기본이라고 생각하기 때문에 입문자에게는 어려울 수 있다.

그래서 만약 이 글을 읽고 이해가 안된다면 앞으로의 글도 이해가 안될거라고 생각하기 때문에

괜히 고집부리지 말고 내 블로그를 떠나기를 추천한다.

(나중에 어느정도 감이 잡히면 다시 오기를...)

 


나는 다음 환경 에서 작업하였다.

OS : Windows 10

IDE : Visual Studio 2019 (딱히 C만 지원 하면 어떤 개발환경이든 차이는 없을 것 같다.)

 

그럼 이제 첫 강좌로 Hellow World를 출력해 보고 기본적인 프로그램의 기본 요소들을 살펴보자.

 

#include <stdio.h>

int main(void){
	printf("Hello Wordl!\n");
	return 0;
}

Hello World출력 예제는 프로그래밍을 해본 사람이라면 누구나 거치는 첫 입문이라고 생각한다.

정말~ 간단한 예제지만 이 코드에는 프로그램의 기본 뼈대는 모두 갖추었기 때문에 중요한 예제라고 생각한다.

 


1. 전처리기 (#include)

#include <stdio.h>

'#' 은 전처리기를 의미하는 기호이다. 뒤에 include는 뒤에 오는 파일을 소스에 포함하라는 C언어의 예약어이다.

stdio.h는 "Standard Input Output"의 약자로 해석 그대로 표준 입출력 헤더 파일이다.

 

전처리기란? 

전처리기의 '전' 은 컴파일의 전을 뜻한다. 

지금 C언어 익숙하지 않은 분들은 의문의 꼬리의 꼬리를 지금 계속 물것이다.

컴파일이란 C언어로 작성된 소스코드를 기계어로 번역하는 것을 의미한다.

여기서 "stdio.h"란 파일을 불러오는 것이다. (.h 란 확장자는 헤더 파일이라고 한다. 헤더 파일은 각각의 기능을 수행하는 함수들이 선언되어 있다.)

stdio.h파일을 포함하는 이유는 예제에 사용된 printf() 함수에 대한 선언이 stdio.h파일에 담겨있기 때문이다.

#include <stdio.h>를 지우고 실행한 결과

VS(Visual Studio의 약자)에서는 전처리 코드를 지우고 실행하면 위처럼 컴파일러에 경고가 뜬다.

전처리기의 예약어는 그 외

      • 형태 정의 전처리 : #define, #undef
      • 조건  전처리 : #if, #elif
      • 에러  전처리 : #error
      • - 디버깅 전처리 : #line
      • - 컴파일 옵션 처리 전처리 : #pragma

등 많은 전처리기 등이 있지만 이는 나중에 다른 포스팅을 통해서 전문적으로 설명하도록 하겠다.

 


2. 스코프(Scope)와 구문

{
	명령어;
}

스코프는 여러 구문을 한 덩어리로 묶을 때 사용하는데, 여는 중괄호 '{'와 닫는 중괄호 '}'로 표시한다.

구문은 명령어라고 써진 것처럼 코드의 흐름을 원하는 방향으로 제어하는 명령어들로 이루어진다.

C 언어에서 구문의 끝은 세미콜론';'으로 표시한다.

내가 Python을 좋아하는 가장 큰 이유는 이 세미콜론을 안 붙인다.

C의 최대의 단점이라고 생각할 정도로 이게 정말 귀찮다.

Python과 헷갈려 이를 빠트리지 않도록 조심하자.

C언어는 절차 지향적 언어이기 때문에 스코프 안의 첫 문장부터 차례로 실행된다. 이를 생각하며 구문을 나열하자.

 


3. 함수

C언어는 절차 지향 프로그래밍 언어이다. 이러한 절차적 흐름을 한 덩어리로 묶어 내는 코드 단위이다.

이러면 그냥 스코프를 사용하는 것이랑 무엇이 다른 거냐고 생각할 수 있다. 물론 묶어내는 역할만 있는 것은 아니다.

C언어의 함수는 기본적으로 매개변수, 함수 몸체, 이루어져 있다.

매개변수는 함수가 작동하는데 필요한 변숫값을

반환 값은 함수가 연산 값을 끝내고 얻을 수 있는 값들을 의미합니다.

HelloWorld에서 printf()와 main()이 함수입니다.

또한 printf("Hello Wordl!\n");에서 '(', ')' 가로 안에 들어가는 값을 매개변수라고 합니다.

즉 printf()라는 매개변수를 출력하는 함수에 "Hello World!\n"를 매개변수로 실행한 것이죠.

또한 main() 함수의 return 0;를 실행해 0이라는 값을 반환하죠

(main함수는 실행이 끝나면 프로그램이 종료되기 때문에 사실상 0을 반환하는 의미는 딱히 없습니다.)


4. 빌드

HelloWorld를 DevC++에서 실행하기 위해서 F11(Compile&Run 단축키)를 누르면 예제가 실행이 됩니다.

이 과정을 설명하자면

HelloWorld.c --(Compile)--> HelloWorld.obj --(Link)--> HelloWorld.exe(실행 가능한 기계어 코드)

란 순서로 파일이 생성됩니다.

DevC++은 F11을 누르면 위 과정이 자동으로 진행되어 exe파일을 생성합니다.

컴파일 과정은 우리가 작성한 소스코드를 기계(CPU)가 인식할 수 있는 명령어로 번역하는 과정입니다.

그리고 링크는 번역된 결과물를 한데 묶어서 실행할 수 있는 exe파일 형식으로 만드는 과정입니다.

이를 우리는 빌드(Build)라고 부릅니다.

왜 위와 같은 과정을 거치는지는 Window가 어떤 방식으로 프로그램을 실행하는지 전문적인 기술지식을 필요하기

때문에 이번 강좌는 간단히 저런 과정이 있다고 그냥 설명드리겠습니다.

 


이번 강좌는 간단히 저희가 만드는 프로그램이 어떻게 구성되어있는지 설명하였습니다.

다음 강좌는 이제 변수와 자료형에 대해 설명해보려고 합니다.

 

최종 편집일) 2021-05-27

반응형

'C & C++ > 강좌' 카테고리의 다른 글

C강좌 2. 자료형(DATA TYPE) 🔨 -정수형 편-  (0) 2020.11.08