출시·고도화 중
Programming language · 1972년 공개
C는 빠른 네이티브 코드로 컴파일되고 메모리와 하드웨어를 직접 다룰 수 있는, 작고 이식성 높은 시스템 프로그래밍 언어입니다.
C는 범용 절차적 프로그래밍 언어로, 벨 연구소의 데니스 리치가 유닉스 운영체제를 작성하기 위해 설계했습니다. 이후 ANSI와 ISO에서 표준화되었고, 지금은 ISO/IEC JTC1/SC22/WG14 위원회가 표준을 관리하며 C99, C11, C17 같은 개정판이 널리 쓰입니다. 키워드가 적고 함수, 구조체, 포인터 같은 단순한 구성 요소로 이루어져 있으며, 컴파일러가 소스 코드를 곧바로 기계어로 번역합니다.
C는 운영체제 커널, 장치 드라이버, 마이크로컨트롤러 펌웨어, 언어 런타임, 데이터베이스처럼 예측 가능한 성능과 작은 실행 파일, 메모리에 대한 직접 제어가 필요한 곳에서 강점을 보입니다. 거의 모든 플랫폼에 C 컴파일러가 있고, C의 호출 규약(ABI)은 여러 언어가 서로의 라이브러리를 부를 때 쓰는 공통 접점입니다. 다만 배열 경계 검사나 자동 메모리 관리가 없어 버퍼 오버플로나 해제된 메모리 사용 같은 오류는 프로그래머가 직접 막아야 합니다.
처음 배운다면 GCC, Clang, MSVC 중 하나를 설치하고 터미널에서 작은 프로그램을 직접 컴파일해 보는 것으로 시작합니다. 변수와 자료형, 제어문, 함수, 배열과 문자열, 포인터, 구조체, 동적 메모리 순서로 익히는 것이 일반적입니다. 컴파일할 때 -Wall -Wextra로 경고를 켜 두고, cppreference에서 표준 라이브러리를 찾아보며, AddressSanitizer와 GDB로 메모리 오류를 추적하는 습관을 들이면 도움이 됩니다.
포인터로 메모리 주소를 직접 다루고 malloc과 free로 메모리를 직접 관리할 수 있어, 자료 배치와 자원 사용을 세밀하게 통제할 수 있습니다.
언어 자체가 작고 ISO 표준으로 정의되어 있어, 표준을 따르는 코드는 다양한 운영체제와 프로세서에서 다시 컴파일해 쓸 수 있습니다.
네이티브 기계어로 컴파일되고 런타임이 거의 필요 없어, 운영체제 없이 동작하는 펌웨어나 부트로더에도 쓸 수 있습니다.
C 함수 인터페이스는 사실상 표준 ABI로 쓰여, Python, Rust, Go 같은 언어가 FFI로 C 라이브러리를 직접 호출할 수 있습니다.
Debian·Ubuntu 계열 Linux에서는 아래 명령으로 GCC와 Make를 설치합니다(Fedora는 sudo dnf install gcc make). macOS에서는 xcode-select --install로 Xcode 명령줄 도구를 설치하면 Clang을 쓸 수 있습니다. Windows에서는 MSYS2를 설치한 뒤 UCRT64 셸에서 pacman -S mingw-w64-ucrt-x86_64-gcc를 실행하거나, Visual Studio Build Tools의 'C++를 사용한 데스크톱 개발' 워크로드를 설치합니다.
sudo apt install build-essential새 터미널을 열고 컴파일러 버전이 표시되는지 확인합니다. macOS에서는 gcc 명령이 Apple Clang으로 연결되어 있어 Clang 버전이 표시됩니다. MSVC를 설치했다면 Developer Command Prompt에서 cl을 실행해 확인합니다.
gcc --version첫 프로그램을 hello.c로 저장한 뒤, 경고를 켜고 C17 표준으로 컴파일해 실행합니다. MSVC에서는 cl /W4 hello.c로 컴파일하고 hello.exe를 실행합니다.
gcc -Wall -Wextra -std=c17 hello.c -o hello && ./hello#include <stdio.h>는 printf 함수가 선언된 표준 입출력 헤더를 불러옵니다. main 함수는 프로그램이 시작되는 지점이며, (void)는 인수를 받지 않는다는 뜻입니다. printf는 문자열을 출력하고 \n은 줄바꿈입니다. return 0은 운영체제에 정상 종료를 알립니다. gcc가 소스를 실행 파일 hello로 컴파일하고, ./hello로 실행합니다.
hello.c
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
return 0;
}
gcc hello.c -o hello && ./hello설치부터 C 의 핵심 개념까지, 여섯 장으로 차근차근 따라 합니다.
C 에 관해 묻고, 경험을 나누고, 의견을 주고받는 곳입니다.
아직 토론이 없습니다. 첫 이야기를 시작해 보세요.
댓글 0개
로그인 · 로그인하면 댓글을 남길 수 있습니다.
첫 댓글을 남겨 보세요.