---
title: "#모음: C언어 프로그래밍"
url: "https://notes.junghanacs.com/bib/20250521T161411"
author: "Junghan Kim"
date: "2025-05-21T16:14:00+09:00"
lastmod: "2025-05-21T00:00:00+09:00"
tags: ["bib","clang","programming","language","embedded"]
description: "C언어 문법과 시스템 프로그래밍, 임베디드 개발로 이어지는 핵심 자료를 모아 두는 그릇이다."
---

> [!abstract] 이 노트에 대하여
> 
> C언어 문법과 시스템 프로그래밍, 임베디드 개발로 이어지는 핵심 자료를 모아 두는 그릇이다.

## 히스토리

-   [2025-06-16 Mon 13:52] 임베디드 리눅스 시스템 프로그래밍 관련 문서를 담을 그릇

## 관련메타

-   [#임베디드리눅스](https://notes.junghanacs.com/meta/20250516T110351)
-   [#시스템](https://notes.junghanacs.com/meta/20240527T150651)
-   [#C언어#CPP언어](https://notes.junghanacs.com/meta/20230725T144100)

## @옌스구스테트 모던 C Modern C

(옌스 구스테트 2022)

-   옌스 구스테트 남기혁 2022

C만이 가진 고유한 개념과 작성 기법을 배워 '더 완전한' C 프로그램을 작성할 수 있다!C 언어는 50년 이상된 프로그래밍 언어이며, 처음 등장한 이후 컴퓨터, 전화기, 카메라, 냉장고, 자동차 등 프로그래밍 인터페이스를 가진 거의 모든 기기에서 사용되고 있다...

C만이 가진 고유한 개념과 작성 기법을 배워 '더 완전한' C 프로그램을 작성할 수 있다!

C 언어는 50년 이상된 프로그래밍 언어이며, 처음 등장한 이후 컴퓨터, 전화기, 카메라, 냉장고, 자동차 등 프로그래밍 인터페이스를 가진 거의 모든 기기에서 사용되고 있다. 이처럼 C로 만든 프로그램이나 시스템은 어디서나 볼 수 있지만 제대로 된 C 관련 자료는 굉장히 드물다. ISO C 표준 공동 편집자인 저자는 최신 C 표준을 기반으로 C만이 가진 고유한 개념과 작성 기법을 소개하고, C 언어에서 특별히 가치 있게 눈여겨볼 부분을 주로 설명한다.

### 레벨 0 만남

-   1장 들어가며

-   1.1 명령형 프로그래밍
-   1.2 컴파일하고 실행하기
-   1.3 요약

-   2장 프로그램의 핵심 구조

-   2.1 문법
-   2.2 선언
-   2.3 정의
-   2.4 문장
-   __2.4.1 반복
-   __2.4.2 함수 호출
-   __2.4.3 함수 리턴
-   2.5 요약

### 레벨 1 친숙

-   3장 결국은 제어

-   3.1 조건부 실행
-   3.2 반복문
-   3.3 다중 선택
-   3.4 요약

-   4장 계산 표현하기

-   4.1 산술
-   __4.1.1 +, -, \*
-   __4.1.2 나눗셈과 나머지
-   4.2 오브젝트를 수정하는 연산자
-   4.3 불 연산
-   __4.3.1 비교 연산
-   __4.3.2 논리 연산
-   4.4 삼항 연산자와 조건 연산자
-   4.5 평가 순서
-   4.6 요약

-   5장 값과 데이터

-   5.1 추상 상태 기계
-   __5.1.1 값
-   __5.1.2 타입
-   __5.1.3 바이너리 표현과 추상 상태 기계
-   __5.1.4 최적화
-   5.2 기본 타입
-   5.3 값 지정하기
-   __5.3.1 복소수 상수
-   5.4 암묵적 변환
-   5.5 초기자
-   5.6 이름 있는 상수
-   __5.6.1 읽기 전용 오브젝트
-   __5.6.2 열거형
-   __5.6.3 매크로
-   __5.6.4 복합 리터럴
-   5.7 바이너리 표현
-   __5.7.1 부호 없는 정수
-   __5.7.2 비트 집합과 비트 단위 연산자
-   __5.7.3 시프트 연산자
-   __5.7.4 불 값
-   __5.7.5 부호 있는 정수
-   __5.7.6 고정폭 정수 타입
-   __5.7.7 부동 소수점 데이터
-   5.8 요약

-   6장 파생 데이터 타입

-   6.1 배열
-   __6.1.1 배열 선언
-   __6.1.2 배열 연산
-   __6.1.3 배열 길이
-   __6.1.4 매개변수로 사용하는 배열
-   __6.1.5 스트링은 특별하다
-   6.2 불투명 타입으로 사용하는 포인터
-   6.3 구조체
-   6.4 타입 이름 새로 짓기: 타입 앨리어스
-   6.5 요약

-   7장 함수

-   7.1 간단한 함수
-   7.2 main은 특별하다
-   7.3 재귀호출
-   7.4 요약

-   8장 C 라이브러리 함수

-   8.1 C 라이브러리의 기본 속성과 제공 함수
-   __8.1.1 헤더
-   __8.1.2 인터페이스
-   __8.1.3 오류 검사
-   __8.1.4 경계값 검사 인터페이스
-   __8.1.5 프로그램 사전조건
-   8.2 수학 함수
-   8.3 입력, 출력, 파일 조작
-   __8.3.1 서식을 적용하지 않은 텍스트 출력
-   __8.3.2 파일과 스트림
-   __8.3.3 텍스트 IO
-   __8.3.4 서식 지정 출력
-   __8.3.5 서식 없는 텍스트 입력
-   8.4 스트링 처리와 변환
-   8.5 시간
-   8.6 런타임 환경 설정
-   8.7 프로그램 종료 및 어서션
-   8.8 요약

### 레벨 2 이해

-   9장 스타일

-   9.1 코드 서식
-   9.2 이름 짓기
-   9.3 요약

-   10장 구성과 문서화

-   10.1 인터페이스 문서화
-   10.2 구현
-   __10.2.1 매크로
-   __10.2.2 순수 함수
-   10.3 요약

-   11장 포인터

-   11.1 포인터 연산
-   __11.1.1 주소 연산자와 오브젝트 연산자
-   __11.1.2 포인더 덧셈
-   __11.1.3 포인터 뺄셈
-   __11.1.4 포인터 유효성
-   __11.1.5 널 포인터
-   11.2 포인터와 구조체
-   11.3 포인터와 배열
-   __11.3.1 배열과 포인터는 접근 방식이 서로 같다
-   __11.3.2 배열 매개변수와 포인터 매개변수는 서로 같다
-   11.4 함수 포인터
-   11.5 요약

-   12장 C 메모리 모델

-   12.1 균일 메모리 모델
-   12.2 유니온
-   12.3 메모리와 상태
-   12.4 불특정 오브젝트에 대한 포인터
-   12.5 명시적 변환
-   12.6 이펙티브 타입
-   12.7 정렬
-   12.8 요약

-   13장 스토리지

-   13.1 malloc과 친구들
-   __13.1.1 가변 크기 배열 예제의 완성 버전
-   __13.1.2 동적 할당 연산에 대한 일관성 보장하기
-   13.2 스토리지 기간, 수명, 가시성
-   __13.2.1 정적 스토리지 기간
-   __13.2.2 자동 스토리지 기간
-   13.3 보충 설명: 오브젝트를 정의하기 전에 사용하기
-   13.4 초기화
-   13.5 보충 설명: 머신 모델
-   13.6 요약

-   14장 고급 처리 과정과 IO

-   14.1 텍스트 처리
-   14.2 서식 지정 입력
-   14.3 확장 문자 집합
-   14.4 바이너리 스트림
-   14.5 에러 검사와 클린업
-   14.6 요약

### 레벨 3 숙달

-   15장 성능

-   15.1 인라인 함수
-   15.2 restrict 지정자 사용하기
-   15.3 측정과 인스펙션
-   15.4 요약

-   16장 함수 같은 매크로

-   16.1 함수 같은 매크로 작동 방식
-   16.2 인수 검사
-   16.3 호출 문맥에 접근하기
-   16.4 디폴트 인수
-   16.5 가변 길이 인수 리스트
-   __16.5.1 가변 인수 매크로
-   __16.5.2 참고: 가변 인수 함수
-   16.6 타입 독립 프로그래밍
-   16.7 요약

-   17장 다양한 제어 흐름
-   17.1 복잡한 예
-   17.2 순서 정하기
-   17.3 숏점프
-   17.4 함수
-   17.5 롱점프
-   17.6 시그널 핸들러
-   17.7 요약

-   18장 스레드

-   18.1 간단한 스레드 제어
-   18.2 경쟁 상태가 없는 초기화와 소멸
-   18.3 스레드 로컬 데이터
-   18.4 크리티컬 데이터와 크리티컬 섹션
-   18.5 상태 변수를 이용한 통신
-   18.6 복잡한 스레드 관리
-   18.7 요약

-   19장 아토믹 접근과 메모리 일관성

-   19.1 선행 관계
-   19.2 동기화를 지원하는 C 라이브러리 호출
-   19.3 순차적 일관성
-   19.4 그 밖의 일관성 모델
-   19.5 요약

### TAKEAWAY - 참고문헌 - 찾아보기
