Effective C (전문적인 C 프로그래밍 입문서)

Effective C (전문적인 C 프로그래밍 입문서)

$33.95
Description
시간이 지나도 변하지 않고 컴퓨팅 세계의 기반을 강화하는 데 도움이 되는 전문적이고 안전하며 이식 가능한 C 코드를 작성하는 방법을 저자의 경험을 바탕으로 설명한다. C와 C 표준 라이브러리를 사용하는 모범 사례와 사용 중에 발생할 수 있는 일반적인 오류 등을 설명한다. C 프로그램을 디버깅하고 테스트하고 분석하는 방법도 소개한다.
저자

로버트C.시코드

(RobertC.Seacord)
NCC그룹의기술이사로C,C++및다른언어의시큐어코딩을개발하고가르친다.C프로그래밍언어의국제표준화작업그룹인ISO/IECJTC1/SC22/WG14의전문가이기도하다.또한,『CERTC프로그래밍2/e』(에이콘출판,2022)와『(개정판)C&C++시큐어코딩』(에이콘출판,2015),『자바시큐어코딩가이드라인』(인피니티북스,2017)등의다른책도저술했다.소프트웨어보안과구성요소기반소프트웨어엔지니어링,웹기반시스템설계,레거시시스템현대화,구성요소저장소및검색엔진그리고사용자인터페이스설계및개발에관한50편이상의논문도발표했다.

목차

1장.C시작하기
__첫번째C프로그램개발하기
____프로그램컴파일및실행
____전처리기지시문
____main함수
____함수반환값확인
____출력형식
__편집기및통합개발환경
__컴파일러
____GNU컴파일러모음
____Clang
____마이크로소프트VisualStudio
__이식성
____구현정의동작
____미지정동작
____미정의동작
____로케일별동작및공통확장
__요약


2장.개체와함수,형식
__개체와함수,형식,그리고포인터
__변수선언
____값바꾸기(첫번째시도)
____값바꾸기(두번째시도)
__범위
__스토리지기간
__맞춤
__개체형식
____부울형식
____문자형식
____숫자형식
____void형식
__함수형식
__파생된형식
____포인터형식
____배열
____구조체
____공용체
__태그
__형식한정자
____const
____volatile
____restrict
__연습문제
__요약


3장.산술형식
__정수
____패딩과정밀도
____〈limits.h〉헤더파일
____정수선언하기
____부호가없는정수
____부호가있는정수
____정수상수
__부동소수점
____부동소수점형식
____부동소수점산술
____부동소수점값
____부동소수점상수
__산술변환
____정수변환순위
____정수확장
____일반산술변환
____암시적변환의예
____안전한변환
__요약


4장.식과연산자
__단순할당
__평가
__함수호출
__증가및감소연산자
__연산자우선순위및결합성
__평가순서
____비순차적평가와규정되지않은순차적평가
____시퀀스포인트
__sizeof연산자
__산술연산자
____단항연산자+와-
____논리부정연산자
____곱하기연산자
____더하기연산자
__비트연산자
____보수연산자
____시프트연산자
____비트AND연산자
____비트배타적OR연산자
____비트포괄적OR연산자
__논리연산자
__캐스트연산자
__조건부연산자
___Alignof연산자
__관계형연산자
__복합할당연산자
__쉼표연산자
__포인터산술
__요약


5장.흐름제어
__식문
__복합문
__선택문
____if문
____switch문
__반복문
____while문
____do...while
____for문
__점프문
____goto문
____continue문
____break문
____return문
__연습문제
__요약


6장.동적으로할당된메모리
__스토리지기간
____힙과메모리관리자
____동적으로할당된메모리를사용하는경우
__메모리관리함수
____malloc함수
____aligned_alloc함수
____calloc함수
____realloc함수
____reallocarray함수
____free함수
__메모리상태
__유연한배열멤버
__동적으로할당된다른스토리지
____alloca함수
____가변길이배열
__할당된스토리지문제디버깅하기
____Dmalloc
____안전이중요한시스템
__연습문제
__요약


7장.문자와문자열
__문자
____ASCII
____유니코드
____소스및실행문자집합
____데이터형식
____문자상수
____이스케이프문자
____Linux
____Windows
____문자변환
__문자열
____문자열리터럴
__문자열처리함수
____〈string.h〉와〈wchar.h〉
____부속서K경계검사인터페이스
____POSIX
____Microsoft
__요약


8장.입출력
__표준입출력스트림
____스트림버퍼링
____미리정의된스트림
____스트림방향
____텍스트및이진스트림
__파일열기및만들기
____fopen함수
____POSIXopen함수
__파일닫기
____fclose함수
____POSIXclose함수
__문자와줄을읽고쓰기
__스트림플러싱
__파일에서위치설정하기
__파일삭제하기및이름바꾸기
__임시파일사용하기
__형식이있는텍스트스트림읽기
__이진스트림에서읽기및쓰기
__요약


9장.전처리기
__컴파일과정
__파일포함
____따옴표및홑화살괄호포함문자열
__조건부포함
____오류만들기
____헤더보호기사용하기
__매크로정의
____매크로대체
____형식제네릭매크로
____미리정의된매크로
__요약


10장.프로그램구조
__구성요소화의원칙
____결합도와응집도
____코드재사용
____데이터추상화
____불투명형식
__실행파일
__링크
__간단한프로그램구조화하기
__코드빌드하기
__요약


11장.디버깅과테스트,분석
__어설션
____정적어설션
____런타임어설션
__컴파일러설정및플래그
____GCC및Clang
____VisualC++
__디버깅
__단위테스트
__정적분석
__동적분석
____AddressSanitizer
__연습문제
__요약

출판사 서평

◈이책에서다루는내용◈
◆C프로그램에서정의되지않은동작을식별하고처리하는방법
◆정수및부동소수점값의범위및표현
◆동적메모리할당이작동하는방법과비표준함수를사용하는방법
◆문자인코딩및형식을사용하는방법
◆C표준스트림및POSIX파일설명자를사용해터미널과파일시스템에서I/O를수행하는방법
◆C컴파일러의변환단계와전처리기의역할을이해하는방법
◆C프로그램을테스트하고디버그하며분석하는방법

◈이책의대상독자◈
C언어에대한입문서로C프로그래밍을배우고자하는모든사람이쉽게이해할수있도록작성했다.즉,다른많은입문서와강좌처럼C프로그래밍을지나치게단순화하지않았다.

◈이책의구성◈
1장,‘C로시작하기’에서는main함수사용에익숙해지도록간단한C프로그램을작성한다.또한편집기와컴파일러에대한몇가지옵션을살펴본다.
2장,‘개체와함수,형식’에서는변수와함수를선언하는것과같은기본적인내용을알아본다.또한기본형식을사용하는원칙도소개한다.
3장,‘산술형식’에서는두종류의산술형식인정수형식과부동소수점형식에관해알아본다.
4장,‘식과연산자’에서는연산자와다양한개체형식에대한연산을수행하기위해간단한식을작성하는방법을소개한다.
5장,‘흐름제어’에서는각문(statement)이평가되는순서를제어하는방법을알아본다.먼저수행할작업을정의하는표현문(expressionstatements)과복합문(compoundstatements)을알아본다.그런다음실행할코드블록을결정하는선택(selection)과반복(iteration),점프(jump)세종류의문을살펴본다.
6장,‘동적으로할당된메모리’에서는런타임에힙(heap)에서할당되는동적으로할당된메모리(dynamicallyallocatedmemory)에관해알아본다.동적으로할당된메모리는런타임전에프로그램에대한정확한스토리지요구사항을알수없는경우에유용하다.
7장,‘문자와문자’에서는ASCII와유니코드를포함한다양한문자열집합을알아본다.C표준라이브러리의레거시(legacy)함수와경계확인인터페이스(bounds-checkedinterfaces),그리고POSIX와WindowsAPI를사용해문자열을표현하고조작하는방법을살펴본다.
8장,‘입력/출력’에서는터미널및파일시스템(filesystem)에서데이터를읽거나쓰기위해입력/출력(입출력,Input/Output)연산을수행하는방법을알아본다.입출력은정보가프로그램에들어오고나가는모든방법을포함하며,입출력을하지못하면프로그램은쓸모가없다.C표준스트림(stream)과POSIX파일설명자를사용하는방법을소개한다.
9장,‘전처리기’에서는전처리기를사용해파일을포함하고,개체같은매크로와함수같은매크로를정의하고,구현체에정의된기능에따라코드를조건부로포함하는방법을알아본다.
10장,‘프로그램구조’에서는프로그램을소스파일과포함(include)파일로구성된여러변환단위로구조화하는방법을알아본다.또한여러개체파일을함께연결해라이브러리와실행파일을만드는방법도살펴본다.
11장,‘디버깅과테스트,분석’에서는컴파일타임과런타임어설션(assertion),디버깅,테스트,정적분석그리고동적분석을포함해정확하고효과적이며안전하고보안성을제공하며강건한프로그램을만드는데필요한도구와기술을설명한다.또한소프트웨어개발프로세스의여러단계에서사용할수있는컴파일러플래그에대해서도알아본다.

◈옮긴이의말◈
사이버보안관련일을하기시작하면서C언어로작성된코드에서사소한오류로인해큰보안사고가발생하는것을직접목격했습니다.이로인해시큐어코딩이라는개념을접하게됐고,이제는시큐어코딩을코드작성초기부터적용하는것이기본이됐습니다.
이책은다른C언어프로그래밍입문서와는다릅니다.표준C언어문법부터시큐어코딩에필요한디버깅,정적분석및동적분석에이르기까지폭넓은내용을담고있습니다.그래서초보자에게는다소어려울수있는데,특히안전한코드작성에필요한취약점에관한내용이나오고,버그가발생할수있는코드의예와이를해결할방법까지도제시합니다.
C언어의기본문법을어느정도알고있는독자라면책뒷부분에나오는메모리할당과입출력,프로그램구조,디버깅,단위테스트그리고정적분석및동적분석의내용을꼼꼼하게익히길바랍니다.전부시큐어코딩에필요한요소입니다.
저자는성능이우수하면서도안전하며보안성을갖춘코드를작성하는것을강조합니다.C프로그램에서정의되지않은동작이발생하는것을막을수있도록저자가소개하는모든방법과도구를활용해시큐어코딩을익힐수있길바랍니다.