히스토리

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

관련메타

@옌스구스테트 모던 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 - 참고문헌 - 찾아보기