IT /C언어 강의

C언어 공부하기: 시작하며 느낀 점과 개발 환경 설정

· 5분 읽기
#C언어 #기초 #개발환경 #시작하기

C언어 공부하기: 시작하며 느낀 점과 개발 환경 설정

솔직히 C언어를 시작한 건 거창한 이유가 있어서가 아니었습니다. Python으로 이것저것 만들다 보니까 “이게 내부적으로 어떻게 돌아가는 거지?” 하는 궁금증이 계속 쌓였는데, 그걸 해소하려면 결국 한 단계 아래로 내려가봐야 하더라고요. 그래서 C를 꺼내 들었습니다.

왜 하필 C언어였나

사실 C++이랑 고민을 좀 했습니다. C++이 더 현대적이기도 하고, 클래스도 쓸 수 있으니까요. 근데 C++은 문법이 너무 방대해서 “기초부터 다시 본다”는 취지랑 안 맞을 것 같았습니다. C는 문법 자체가 작아서 언어보다는 컴퓨터 구조 쪽에 집중할 수 있겠다 싶었어요.

그리고 한 가지 더, Python을 쓸 때 listdict가 내부적으로 메모리를 어떻게 쓰는지 전혀 감이 없었습니다. 가비지 컬렉터가 알아서 해주니까 신경 쓸 일이 없었는데, 그게 오히려 찜찜했달까요. C를 하면 그런 부분을 직접 다루게 되니까 한번 해보자고 생각했습니다.

개발 환경 세팅 — 여기서 시간을 좀 썼습니다

MinGW-w64 설치

Windows에서 C를 컴파일하려면 gcc가 필요한데, 이걸 Windows에서 쓸 수 있게 해주는 게 MinGW-w64입니다.

설치 자체는 어렵지 않습니다.

  1. https://www.mingw-w64.org/ 에서 설치 파일을 받아서 실행
  2. 설치 경로를 정하고 Next를 쭉 누르면 끝

설치 후에 환경 변수 PATH에 MinGW의 bin 폴더를 추가해줘야 합니다. 이걸 안 하면 CMD에서 gcc를 못 찾아요. 저는 처음에 이걸 빠뜨려서 “gcc는 설치했는데 왜 안 되지?” 하고 한참 헤맸습니다.

확인은 CMD를 열고 이렇게 치면 됩니다.

gcc --version

버전 정보가 뜨면 된 겁니다. 안 뜨면 PATH를 다시 확인해보세요.

VS Code 설치

에디터는 VS Code를 골랐습니다. 다른 것도 써봤는데 결국 여기로 돌아오게 되더라고요. 가볍고 확장 프로그램이 많아서 C 개발에도 무리가 없습니다.

  1. https://code.visualstudio.com/ 에서 다운로드
  2. 설치하고 실행
  3. Ctrl + Shift + X로 확장 프로그램 탭 열기
  4. “C/C++” 검색해서 Microsoft 거 설치

C/C++ 확장을 깔면 코드에 색이 입혀지고 자동완성도 되니까 훨씬 편해집니다.

첫 코드 작성하고 실행하기

VS Code에서 hello.c 파일을 만들고 이렇게 작성했습니다.

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    printf("안녕하세요! C언어를 공부하고 있어요!\n");
    return 0;
}

Python이랑 비교하면 확실히 타이핑이 많습니다. print("Hello")면 끝나는 걸 여기선 #include도 써야 하고, main 함수도 감싸야 하고, 세미콜론도 붙여야 하고요. 처음엔 좀 번거롭다고 느꼈는데, 이게 “필요한 것만 명시적으로 가져다 쓴다”는 C의 방식이라고 생각하니까 나름 이해가 됐습니다.

각 줄이 하는 일을 적어보면:

  • #include <stdio.h>printf 같은 입출력 함수를 쓰려면 이 헤더가 필요합니다. Python처럼 그냥 바로 쓸 수가 없어요.
  • int main() — 프로그램의 시작점입니다. C 프로그램은 무조건 여기서부터 실행됩니다.
  • printf("...\n") — 화면에 출력하는 함수. \n은 줄바꿈인데, 이걸 빼먹으면 다음 출력이 바로 옆에 붙어 나옵니다.
  • return 0 — 프로그램이 정상 종료되었다는 뜻. 0이 아닌 값을 반환하면 뭔가 문제가 있었다는 신호입니다.

컴파일과 실행

C는 컴파일 언어라서 코드를 바로 실행할 수 없습니다. 먼저 기계어로 번역(컴파일)하고, 그 결과물을 실행하는 두 단계를 거칩니다.

VS Code에서 터미널을 열고 (Ctrl + ~) 이렇게 입력합니다.

gcc hello.c -o hello

이러면 hello.exe가 생기고, 이걸 실행하면 됩니다.

hello
Hello, World!
안녕하세요! C언어를 공부하고 있어요!

Python에서는 python hello.py만 치면 바로 결과가 나왔는데, C는 컴파일 단계가 하나 더 있으니까 처음엔 약간 귀찮았습니다. 근데 이 과정 자체가 “내가 쓴 코드가 기계어로 바뀌어서 실행되는구나”를 체감하게 해줘서, 나중에 보면 오히려 좋은 경험이었다 싶습니다.

C 프로그램의 기본 뼈대

모든 C 프로그램은 이런 구조를 따릅니다.

#include <stdio.h>  // 1. 필요한 라이브러리 불러오기

int main() {        // 2. 프로그램 시작점
    // 여기에 코드를 작성합니다
    printf("안녕하세요!\n");
    return 0;       // 3. 프로그램 종료
}

처음에 int main()int가 왜 붙는지 이해가 안 됐는데, return 0의 0이 정수니까 반환 타입이 int인 거였습니다. 나중에 함수 파트에서 자세히 나오겠지만, 일단 지금은 “main 함수는 정수를 반환하는 함수”라고 알아두면 됩니다.

연습: 자기소개 프로그램

printf에 익숙해질 겸 간단한 걸 하나 더 만들어봤습니다.

#include <stdio.h>

int main() {
    printf("=== 자기소개 ===\n");
    printf("이름: 홍길동\n");
    printf("나이: 25세\n");
    printf("취미: 프로그래밍\n");
    printf("좋아하는 언어: C언어\n");
    printf("================\n");
    
    return 0;
}
=== 자기소개 ===
이름: 홍길동
나이: 25세
취미: 프로그래밍
좋아하는 언어: C언어
================

별거 아닌 코드인데 직접 컴파일하고 결과를 보면 뿌듯하긴 합니다.

초반에 자주 걸리는 것들

공부하면서 몇 번이고 반복한 실수를 적어둡니다. 다 사소한 건데, 초반에는 이런 거에 시간을 꽤 잡아먹힙니다.

세미콜론 빠뜨리기

printf("Hello")  // 에러
printf("Hello"); // 정상

Python 쓰다가 넘어오면 거의 100% 이걸로 한 번은 당합니다. 컴파일 에러 메시지가 “expected ’;’” 같은 게 뜨면 세미콜론부터 확인하면 됩니다.

따옴표 혼동

printf('Hello'); // 에러 -- 작은따옴표는 문자 하나용
printf("Hello"); // 정상 -- 문자열은 큰따옴표

Python에서는 작은따옴표든 큰따옴표든 상관없었는데, C에서는 완전히 다른 의미입니다. 작은따옴표는 char 하나('A' 같은), 큰따옴표는 문자열. 이걸 헷갈리면 컴파일러가 알 수 없는 에러를 내뿜어서 처음에 좀 당황했습니다.

한글 깨짐

VS Code에서 파일 인코딩이 UTF-8이 아닌 다른 걸로 되어 있으면 한글이 깨집니다. VS Code 우하단에 인코딩이 뭔지 보이는데, UTF-8로 맞춰두면 됩니다. 저는 처음에 이걸 몰라서 “코드는 맞는데 왜 출력이 이상하지?” 하고 한참 삽질했습니다.

여기까지 하고 느낀 점

솔직히 Hello World 찍는 데 환경 설정까지 합치면 생각보다 시간이 걸렸습니다. Python이었으면 설치하고 바로 print했을 텐데요. 근데 컴파일이라는 과정을 직접 거쳐보니까 “아, 내가 짠 코드가 이런 단계를 거쳐서 실행되는구나” 하는 감각이 좀 생겼습니다. 앞으로 변수랑 데이터 타입을 정리할 건데, C에서 타입을 왜 그렇게 엄격하게 따지는지 그때 좀 더 와닿지 않을까 싶습니다.