Initially, I started to write this C / C ++ course for the first year engineering students of my engineering school while I was myself in the second year. I wanted to provide a complete, rigorous course support accessible to everyone to promote the C language (and especially C ++) against the ignoble Fortran …
At that time, I had no more knowledge than I had read in the books, and in fact, this course was incomplete or even incorrect in some places. My software engineering professor at the time, Jacques Jarray, however did me the honor and the pleasure of reading it again. I was then able to complete this course by relying on the Draft Papers of the language normalization project. The description of the language which is made in this course is therefore as close as possible to the standard, which is a guarantee of sustainability and quality.
I did not want to include a chapter dealing with the standard C ++ library in this course, because I considered that it was not a fairly stable part on the one hand, and that all the part concerning standard flows was not useful in graphic environments. However, given the general demand, the stabilization of the language, the appearance of correct implementations (GCC 3.2.0 and Intel C ++ 6.0) and the importance that the containers of the standard library take, I decided to write the missing parts.
I thus arrived at version 1.40.6 of this course, which describes all the functionalities of the language as it is described by the C ++ ISO 14882 standard. It also presents the standard library of this same standard in detail, something relatively exceptional. . This version is distributed free of charge under the GNU FDL license, but is no longer maintained. You can get it on the download page in HTML and SGML formats.
On the other hand, I recently resumed the entire first part of this document, which no longer met my own quality criteria. So I produced version 2.0.3 of this course, which benefited from the following modifications:
complete restructuring of the first part in order to make it more didactic and more progressive for beginners;
addition of a whole chapter on coding conventions;
description of classic techniques usable in C ++;
presentation of object principles and description of object programming techniques in C;
description of the main system aspects to take into account when programming, and more precisely multithreading, signals and dynamic library management. More experienced readers will therefore also have something to grind.
You can get this new version in PDF and HTML formats on the download page for a minimal contribution (from one to two euros, consider that you are offering me a pot for the time spent producing this document).
I thank my readers and future readers, and all those who sometimes point out an error and allow me to correct it.