Page 3 -
P. 3
Modern C
능을 사용하면 큰 도움이 되는 프로젝트라도 코드 베이스를 업데이트하지 않도록 하는, 의도하지
않은 부작용이 생겼다.
이 책은 주로 JTC1/SC22/WG14에서 정의한 C17[2018]을 다룬다. 하지만 집필 시점에 이 버
전을 완벽히 지원하지 않는 컴파일러도 몇몇 있었다. 이 책에 나온 예제를 컴파일하고 싶다면 최
소한 C99를 지원하는 컴파일러 사용을 권장한다. C11에 더 추가된(C99) 기능은 필자가 만든 매
크로 패키지인 P99와 같은 에뮬레이션 레이어를 이용하는 것으로 충분할 것이다. P99 패키지는
http://p99.gforge.inria.fr에서 내려받을 수 있다.
C와 C++
프로그래밍은 매우 중요한 문화이자 경제 활동으로 자리 잡았으며, 이러한 프로그래밍 세계에서
C는 여전히 큰 비중을 차지한다. 인간의 활동이 그렇듯이 C 언어는 기업이나 개인의 관심, 정치,
미적 요인, 논리, 운, 무지, 이기심, 자아, 파벌주의, 그 외 여러분의 주된 동기를 비롯한 여러 요
인에 의해 발전하고 있다. 그래서 C 언어는 이상적인 형태로 발전하지 못했고 또 그럴 수도 없다.
여러 가지 결함과 어색한 부분이 존재할 수밖에 없는데, 이는 역사나 사회적 배경을 감안해야 이
해할 수 있다.
자매 언어인 C++가 등장한 초창기는 C의 발전 과정에서 중요한 영향을 미쳤다. C++는 C를 바
탕으로 몇 가지 기능을 추가해서 진화한 언어라고(C++는 아주 초창기 버전의 C에서 발전했다고)
잘못 아는 사람들이 많다. 역사적인 관점에서 완전히 틀린 말은 아니지만 현재는 크게 관련이 없
다. 실제로 C와 C++의 계통이 갈라진 지 30년이 넘었으며, 이후로는 서로 독립적으로 발전했다.
하지만 두 언어의 발전 과정이 완전히 단절된 것은 아니었다. 개념과 기능에 대한 영향을 주고받
고 서로의 기능을 도입하면서 발전했다. 최근 추가된 어토믹과 스레드처럼 몇 가지 새로운 기능은
C와 C++ 표준 위원회의 긴밀한 협업을 통해 설계된 것이다.
그렇지만 여전히 차이점은 많이 있으며, 이 책에서는 C++가 아닌 C를 주로 다룬다. 이 책에서 소
개하는 코드 예제는 대부분 C++ 컴파일러로는 컴파일되지 않을 것이다. 따라서 두 언어를 혼용
하지 않기 바란다.
7
모던c.indd 7 2021-12-29 오후 2:32:55