GPG 1권 1부 정오표

_

_


섹션 1.1 객체 지향적 프로그래밍과 설계 기법

p50 편집 오류

2001.1.22

50 페이지 '설계 패턴들'이 좀 더 큰 제목이 되어야 합니다. 원래는 그 아래 단일체 패턴과 같은 크기의 제목이 아니라, 49 페이지의 '클래스 계통 구조의 설계'와 같은 수준의 제목입니다.

이것 때문에 목차에서 '설계 패턴'이 빠지게 되었습니다.

섹션 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산

p.63 15번째 줄 코드 탈자

2000.12.27

코드 중간에 -가 빠졌습니다

이전: return 1.0 ( fRad*fRad/(2.0*i.....
수정: return 1.0 - ( fRad*fRad/(2.0*i.....

p.66 마지막 문단 오자, 오역

2000.12.27

우선, 마지막 문단 중간의 '주어진 I에 대해서, I mod 0을..'은 '주어진 I에 대해서, I mod N을..'로 바꿔야 합니다. 0이 아니라 N입니다.

그리고, 조금 아래를 보면 '현재 열은 I를 N mod N으로 나눠서 얻는다'가 있는데요. 순서가 틀렸습니다. '현재 열은 I를 N으로 나누고 그것을 N으로 나눈 나머지로 얻는다.'로 고쳐야 합니다. (I / N) mod N 인거죠.

섹션 1.5 일반화된 함수-바인딩 인터페이스

p.114 파일 이름 오타

2001.2.13

마지막 문장에 DbHelp.dll이라고 되어 있는데 DbgHelp.dll입니다.... g가 빠졌습니다.

섹션 1.6 범용 핸들 기반 관리자

p.118 작은 오타

2001.5.10

첫 번째 문단 제일 끝의 괄호를 보면 if !(aHandle)이라고 되어 있는데, if (!aHandle)이 맞습니다. ! 연산자가괄호 안으로 들어가야 합니다.

섹션 1.12 assert의 비법들

p.167 assert -> Assert

2001.5.6

페이지 위쪽 '다음은 이 매크로를 사용하는 예이다' 아래 두 줄의 코드에서, assert를 Assert로 바꿔야 합니다. 즉 그 위의 #define으로정의한 매크로 이름을 써야 하는 것입니다.그리고 assert의 비법 # 4 부분 두 번째 문단의 assert.cnot은 단순히 assert.c의 오타입니다.

섹션 1.14 실시간 게임 내 프로파일링

p.181 표 1.14.2의 들여쓰기

2000.12.16

들여쓰기는 각 샘플들의 부모-자식 관계를 의미합니다. 원서는 아예 들여쓰기가 되어 있지 않았구요. 제가 코드를 보고 나름대로 들여쓰기를 추가한 것이 번역서에 나온 표입니다. 그런데 그것도 부족했군요.. 정확한 모습은 다음과 같습니다.

 Ave | Min  | Max  |  # | Profile Name
-------------------------------------------------------
 2.4 |  1.8 |  2.8 |  1 | Main Game Loop
 2.2 |  1.9 |  2.3 |  1 |    Game Object Update
 7.6 |  6.5 | 27.4 | 32 |       AI Update
 1.1 |  0.8 |  1.3 |  1 |    Collision Detection
 1.0 |  0.9 |  1.1 |  1 |    Physics
85.7 | 65.1 | 88.1 |  1 |    Graphics Draw Routine

AI Update가 Game Object Update의 자식이라는 점이 빠져 있었던 거죠

p.187~188 목록 14.2와 14.3 코드 중 빼기 기호(-) 빠짐 ( 2002-7-18 )

목록 1.14.2 첫 번째 if 문 안

    float fEndTime = GetTime();
    g_samples[i].iOpenProfiles--; // 여기

목록 1.14.2 마지막 if 문과 그 아래

    if ( parent >= 0)
    {
      g_samples[parent].fChildrenSampleTime += fEndTime -  // 여기
        g_samples[i].fStartTime;
    }
    // 현재 샘플의 누적기에 현재 수행 시간을 누적시킨다.
    g_samples[i].fAccumulator += fEndTime - // 여기
       g_samples[i].fStartTime;
    ...

목록 1.14.3 while 문의 첫 번째 if 문 아래

...
   sampleTime = g_samples[i].fAccumlator -  // 여기
       g_samples[i].fChildrenSampleTime;
...

서관희님이 알려주셨습니다 :)