translated

translated 20170216 MASTER Cpp PROGRAMMING WITH OPEN-SOURCE BOOKS.md
This commit is contained in:
xiaow6 2017-02-28 20:05:20 +08:00
parent 23b5bc6289
commit ac576fb26d
2 changed files with 232 additions and 262 deletions

View File

@ -1,262 +0,0 @@
LEARN C PROGRAMMING WITH 9 EXCELLENT OPEN SOURCE BOOKS
============================================================
Books are very personal things. And programming books are no exception. We all form bonds with programming books that help master the rudiments of a language, and then be able to move on to fully exploit the languages flexibility.
I have carefully considered the open source C books that are closest to my heart. I have identified 9 books that mean the most to me.
C is a general-purpose, procedural, portable, high-level programming language that is one of the most popular and influential languages. It was designed to be compiled using a straightforward compiler, to provide low-level access to memory, to provide language constructs that map efficiently to machine instructions, and to require minimal run-time support. Many programming languages owe a considerable debt to C. It has become something of the lingua franca in the programming world.
C is fairly simple to understand. It allows the programmer to organize programs in a clear, easy, logical way. It is a very flexible, practical and compact language combined with an easy to read syntax. Code written in C runs quickly, with easy access to the low level facilities in the computer. Compiler directives make it possible to produce a single version of a program compiled for different architectures.
C is about freedom. It therefore makes sense to learn C with books that also embody freedom. Take a look at my open source picks and see if any of them grab your fancy. Put the kettle on and enjoy.
|
![The C Book](https://i1.wp.com/www.ossblog.org/wp-content/uploads/2017/01/TheCBook.png?resize=200%2C290&ssl=1)
|
### [The C Book][3]
By Mike Banahan, Declan Brady and Mark Doran (350 pages)
The C Book is designed for programmers who already have some experience of using a modern high-level procedural programming language. The book concentrates on the things that are special to C. In particular, it is the way that C is used which is focused on.
Chapters include:
* An Introduction to C
* Variables and Arithmetic introduces some of the fundamentals of C, including keywords and identifiers, declaration of variables, real types, integral types, expressions and arithmetic, and constants
* Control of Flow and Logical Expressions looks at the various ways that the control of flow statements can be used in a C program, including some statements that have not been introduced so far. Control of flow, more logical expressions, and strange operators
* Functions the type of functions, recursion and argument passing, and linkage
* Arrays and Pointers arrays, pointers, character handling, sizeof and storage allocation, pointers to functions, expressions involving pointers, arrays, the & operator and function declarations
* Structured Data Types structures, unions, bitfields, enums, qualifiers and derived types, and initialization
* The Preprocessor how the preprocessor works, and directives
* Specialized Areas of C declarations, definitions and accessibility, typedef, const and volatile, and sequence points
* Libraries diagnostics, character handling, localization, limits, mathematical functions, non-local jumps, signal handling, variable numbers of arguments, input and output, formatted I/O, character I/O, unformatted I/O, random access functions, general utilities, string handling, and date and time
* Complete Programs in C putting it all together, arguments to main, interpreting program arguments, a pattern matching program, and a more ambitious example
The authors give the reader permission to do anything they want with the book provided there is an acknowledgement of the authors and their copyright. From what Mike Banahan has confirmed, the book is effectively under the Creative Commons License.
|
|
![C Elements of Style](https://i0.wp.com/www.ossblog.org/wp-content/uploads/2017/01/CElementsofStyle.jpg?resize=200%2C255&ssl=1)
|
### [C Elements of Style][4]
By Steve Oualline (265 pages)
C Elements of Style is a useful guide which covers the principals of good programming style, teaching C and C++ programmers how to write code that can be easily read, understood, and maintained by others. Whether you are a student or professional programmer, you will benefit from the many tips and techniques for constructing elegant, reliable code.
The book attempts to show readers how to build a good programming style into your code. Since computer reads only the code and the human concentrates on the comments, a good programming style pertains to both parts of a program.
The ultimate goal is to build a well-designed, well-written code which not only make an effective use of the computer and but also contains careful constructed comments to help humans understand it. This condition will ease the debugging, maintenance and enhancement process, which will eventually improve the readability, portability, reliability and maintainability of your code.
Inside, you will find guidelines on writing comments, program heading, determining variable names, statement formatting, statement details, writing preprocessor, organizing directories and creating makefile.
This book is published under the Creative Commons License.
|
|
![Build Your Own Lisp](https://i2.wp.com/www.ossblog.org/wp-content/uploads/2017/02/BuildYourOwnLisp.jpeg?resize=200%2C299&ssl=1)
|
### [Build Your Own Lisp][5]
By Daniel Holden (212 pages)
Learn the C programming language and at the same time learn how to build your very own programming language, a minimal Lisp, in under 1000 lines of code.
This book is for anyone wanting to learn C, or who has once wondered how to build their own programming language. It is not designed as a first programming language book, as you need some programming experience to make your way through the content.
Build Your Own Lisp is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0.
A paperback is available to purchase from Amazon.
|
|
![](https://i2.wp.com/www.ossblog.org/wp-content/uploads/2017/02/GNUCReferenceManual.png?resize=200%2C279&ssl=1)
|
### [The GNU C Reference Manual][6]
By Trevis Rothwell, James Youngman (91 pages)
The GNU C Reference Manual is a reference for the C programming language and aims to document the 1989 ANSI C standard, the 1999 ISO C standard, and the current state of GNU extensions to standard C. It is not designed for new programmers.
Chapters cover:
* Lexical Elements describes the lexical elements that make up C source code after preprocessing. These elements are called tokens. There are five types of tokens: keywords, identifiers, constants, operators, and separators
* Data Types examines primitive data types, enumerations, unions, structures, arrays, pointers, incomplete types, type qualifiers, storage class specifiers, and renaming types
* Expressions and Operators also looks at incrementing / decrementing, arithmetic operators, complex conjugation, comparison operators, logical operators, bit shifting, bitwise local operators, pointer operators, the sizeof operator, type casts, and more
* Statements read about labels, expression statements, the if statement, the switch statement, the while statement, the do statement, the for statement, blocks, the null statement, the goto statement, the break statement, the continue statement, the return statement, and the typedef statement
* Functions learn about function declarations, function definitions, calling functions, function parameters, variable length parameter lists, calling functions through function pointers, the main function, recursive functions, and more
* Program Structure and Scope looks at the big picture
* A Sample Program a complete program written in C, consisting of both a C source file and a header file. This program is an expanded version of the quintessential “hello world” program, and serves as an example of how to format and structure C code for use in programs for FSF Project GNU
The book is available under the terms of the GNU Free Documentation License, Version 1.3 or later.
|
|
![](https://i2.wp.com/www.ossblog.org/wp-content/uploads/2017/02/GNUCProgrammingTutorial.png?resize=475%2C637&ssl=1)
|
### [The GNU C Programming Tutorial][7]
By Mark Burgess, Ron Hale-Evans (290 pages)
The GNU C Programming Tutorial introduces the reader to the basic ideas in a logical order. It offers detailed coverage of each of the main elements of the C language and how to program in C, with special emphasis on the GNU/Linux compiler and associated software.
There are chapters devoted to functions, variables and declarations, scope, expressions and operators, parameters, pointers, decisions, loops, arrays, strings, input and output, and much more.
The GNU C Programming Tutorial is released under the GNU Free Documentation License, Version 1.1.
|
|
![](https://i2.wp.com/www.ossblog.org/wp-content/uploads/2017/02/EssentialC.png?resize=200%2C270&ssl=1)
|
### [Essential C][1]
By Nick Parlante (45 pages)
This Stanford CS Education is a fairly brief document which explains all the common features and techniques for C. The coverage is pretty quick, so it is targeted at a programmer with a background in another language.
Topics include variables, int types, floating point types, promotion, truncation, operators, control structures (if, while, for), functions, value parameters, reference parameters, structs, pointers, arrays, the pre-processor, and the standard C library functions.
Table of Contents:
* Introduction
* Basic Types and Operators
* Control Structures
* Complex Data Types
* Functions
* Odds and Ends
* Advanced Arrays and Pointers
* Operators and Standard Library Reference
The authors description indicates this book is issued under an open-source like license.
|
|
![](https://i1.wp.com/www.ossblog.org/wp-content/uploads/2017/02/BeejsGuideCProgramming.png?resize=200%2C273&ssl=1)
|
### [Beejs Guide to C Programming][8]
By Brian “Beej” Hall (130 pages)
Beejs Guide to C Programming tries to lead the reader from complete and utter sheer lost confusion on to the sort of enlightened bliss that can only be obtained though pure C programming.
Chapters:
* Programming Building Blocks
* Variables, Expressions, and Statements A variable is simply a name for a number. An expression in C consists of other expressions optionally put together with operators. Examines the if, while, do-while, and the for statements
* Building Blocks Revisited
* Functions put some of those building blocks in their own functions when they become too large, or when they do a different thing than the rest of the code
* Variables, the Sequel talks about variable scope and storage classes
* Pointers they are the address of data. Just like an int can be 12, a pointer can be the address of data
* Structures a construct that allows you to logically group variables into groups. You can then reference the group as a whole
* Arrays a linear collection of related data
* Strings a string in C is a sequence of bytes in memory that usually contains a bunch of letters
* Dynamic Memory explores the malloc(), free(), realloc(), and calloc() functions
* More Stuff topics include pointer arithmetic, typedef, enum, struct declarations, command line arguments, multidimensional arrays, casting and promotion, incomplete types, void pointers, NULL pointers, and static keywords
* Standard I/O Library used for reading from and writing to files
* String Manipulation find functions for pulling substrings out of strings, concatenating strings together, getting the length of a string, and more
* Mathematics functions that will serve your general purpose mathematical needs
This book is licensed under the Creative Commons Attribution-Noncommercial- No Derivative Works 3.0 License.
|
|
![](https://i0.wp.com/www.ossblog.org/wp-content/uploads/2017/02/ModernC.png?resize=200%2C270&ssl=1)
|
### [Modern C][2]
By Jens Gustedt (310 pages)
Modern C seeks to motivate the reader to climb to higher levels of knowledge. The book is divided into five levels:
* First level provides the reader with the very basics of C programs, their purpose, their structure, and how to use them
* Second level details most principal concepts and features such as control structures, data types, operators and functions. It aims to provide the reader with a deeper understanding of the things that are going on with running programs
* Third level goes to the heart of the C language. It fully explains pointers, familiarizes you with Cs memory model, and allows you to understand most of Cs library interface.
* Fourth level goes into detail in specific topics, such as performance, reentrancy, atomicity, threads and type generic programming
* Fifth level discusses the authors ideas for a future development of C
This book is licensed under the Creative Commons Attribution-Noncommercial- No Derivative Works 3.0 License.
|
|
![An Introduction to GCC](https://i1.wp.com/www.ossblog.org/wp-content/uploads/2017/01/IntroductionGCC.png?resize=200%2C300&ssl=1)
|
### [An Introduction to GCC][9]
By Brian Gough (144 pages)
An Introduction to GCC provides an introduction to the GNU C and C++ Compilers, gcc and g++, which are part of the GNU Compiler Collection (GCC).
This book explains how to use the compiler itself. Based on years of observation of questions posted on mailing lists, it guides the reader straight to the important options of GCC.
Chapters:
* Introduction
* Compiling a C program describes how to compile C programs using gcc. Programs can be compiled from a single source file or from multiple source files, and may use system libraries and header files
* Compilation options describes other commonly-used compiler options available in GCC. These options control features such as the search paths used for locating libraries and include files, the use of additional warnings and diagnostics, preprocessor macros and C language dialects
* Using the preprocessor describes the use of the GNU C preprocessor cpp, which is part of the GCC package. The preprocessor expands macros in source files before they are compiled. It is automatically called whenever GCC processes a C or C++ program
* Compiling for debugging provides the -g debug option to store additional debugging information in object files and executables. This debugging information allows errors to be traced back from a specific machine instruction to the corresponding line in the original source file
* Compiling with optimization GCC is an optimizing compiler. It provides a wide range of options which aim to increase the speed, or reduce the size, of the executable files it generates
* Compiling a C++ program describes how to use GCC to compile programs written in C++, and the command-line options specific to that language
* Platform-specific options describes some of the options available for common platforms: Intel and AMD x86 options, x86 extensions, x86 64-bit processors, DEC Alpha options, SPARC options, POWER/PowerPC options, Multi-architecture support, and floating-point issues
* Troubleshooting GCC provides several help and diagnostic options to help troubleshoot problems with the compilation process
* Compiler-related tools describes a number of tools which are useful in combination with GCC. These include the GNU archiver ar, for creating libraries, and the GNU profiling and coverage testing programs, gprof and gcov
* How the compiler works describes in more detail how GCC transforms source files to an executable file. Compilation is a multi-stage process involving several tools, including the GNU Compiler itself (through the gcc or g++ frontends), the GNU Assembler as, and the GNU Linker ld. The complete set of tools used in the compilation process is referred to as a toolchain
* Examining compiled files describes several useful tools for examining the contents of executable files and object files
* Common error messages describes the most frequent error and warning messages produced by gcc and g++. Each case is accompanied by a description of the causes, an example and suggestions of possible solutions
* Getting help if readers encounters a problem not covered by this introduction, there are several reference manuals which describe GCC and language-related topics in more detail
This book is published under the GNU Free Documentation License
|
* * *
Here are some informative C Books to download without charge, but which regrettably are not released under an open source license, or where license information is unclear. In no particular order:
[Introduction to C Programming][14]  by Rob Miles
[The New Standard C: An Economic and Cultural Commentary][15]  by Derek M. Jones
[Object-Oriented Programming with ANSI-C][16]  by Axel-Tobias Schreiner
[Writing Bug-Free C Code][17]  by Jerry Jongenius
And finally, my recommendation if you want to buy a canonical reference book is this title: [The C Programming Language][18]. Terse, not for beginners, but widely regarded as the classic C programming book.
--------------------------------------------------------------------------------
via: https://www.ossblog.org/learn-c-programming-with-9-excellent-open-source-books/
作者:[Steve Emms ][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.ossblog.org/author/steve/
[1]:http://cslibrary.stanford.edu/101/EssentialC.pdf
[2]:http://icube-icps.unistra.fr/img_auth.php/d/db/ModernC.pdf
[3]:http://publications.gbdirect.co.uk/c_book/
[4]:http://www.oualline.com/books.free/style/index.html
[5]:http://buildyourownlisp.com/
[6]:https://www.gnu.org/software/gnu-c-manual/
[7]:http://www.crasseux.com/books/ctut.pdf
[8]:http://beej.us/guide/bgc/
[9]:http://www.network-theory.co.uk/docs/gccintro/
[10]:https://www.ossblog.org/author/steve/
[11]:https://www.ossblog.org/learn-c-programming-with-9-excellent-open-source-books/#comments
[12]:https://www.ossblog.org/category/books/
[13]:https://www.ossblog.org/category/programming/
[14]:http://www.tti.unipa.it/~ricrizzo/KS/Data/RMiles/contents.html
[15]:http://www.coding-guidelines.com/cbook/cbook1_2.pdf
[16]:http://www.cs.rit.edu/~ats/books/ooc.pdf
[17]:http://www.duckware.com/bugfreec/index.html
[18]:https://en.wikipedia.org/wiki/The_C_Programming_Language

View File

@ -0,0 +1,232 @@
# C++专家编程与开源书籍
书籍是非常主观和私人的财产编程书籍也不例外。但是不管C++编程书籍的风格、关注点或者节奏如何,好书总可以带领读者走过一段引人入胜的旅程,对编程语言的能力大开眼界,还能向读者描绘如何使用编程语言来实现任何事。
我精心挑选了九本引人入胜的优质C++书籍均基于开源协议发布。在这之前我会给出一份C++的简短介绍。
C++是由Bjarne Stroustrup设计于1983年初次发布的。它是静态类型、自由形态、多重范式、可移植、已编译、通用的编程语言。它被认为是中级语言同时包含有高级与初级编程语言的特性。C++被设计实现系统与应用编程拓展了C编程语言。因此C++的名字中使用了自增运算符++。
C++仍然保持为一种流行的编程语言。例如它被广泛应用于嵌入式系统银行系统以及通讯行业。它作为C的超集保留了C标志性的简洁与高效同时提供更健壮的类型检查多重继承数据抽象异常处理操作符重载泛型编程以及面向对象编程等功能。C++不仅影响了C语言的发展也包括许多其他编程语言包括C#、Java。
![The Boost C++ Libraries](https://i1.wp.com/www.ossblog.org/wp-content/uploads/2017/02/BoostC.jpeg?resize=200%2C245&ssl=1)
### [The Boost C++ Libraries][3]
作者 Boris Schäling (570页)
《The Boost C++ libraries》被认为在C++世界中极其重要并有深远影响。书中这些可移植的库提供对多种任务和结构体的支持包括多线程、容器、字符串和文本处理、迭代器、线性代数、伪随机数产生、元程序设计模板、并发程序设计、数据结构、图像处理、正则表达式和单元测试。Boost可以在几乎所有现代操作系统上工作包括Linux和Windows及其衍生并且支持绝大多数现代编译器。
这本书介绍了72个Boost库提供了广泛并且实用的功能。它们能够帮助程序员更轻松的管理内存和处理字符串。这些库提供多种容器以及其它数据结构来拓展标准库。使用这些库可以轻松实现平台无关的网络应用程序。
本书是一颗值得添加到各类收藏中的明珠。430份源代码例子生动形象地阐释了这些库的功能。
本书前面的章节审视了内存管理,字符串处理,容器,数据结构,算法,通信,文件与流以及时间。后续章节进一步探索了函数式、并行和泛型编程。以对语言拓展,错误与数字处理,应用程序库,设计模式以及其他库的大部分内容。
本书采用知识共享组织署名-非营利性-禁止演绎4.0国际许可协议。如果你喜欢实体书可以在亚马逊上购买纸质书也可选择如kindleE-bookPDF格式的电子书。
![C++ Annotations](https://i2.wp.com/www.ossblog.org/wp-content/uploads/2017/02/CAnnotations.png?resize=470%2C663&ssl=1)
### [C++ Annotations][4]
作者 Frank B. Brokken (1029页)
《C++ Annotations》提供了关于C++编程语言涉及全面的一份教程。它可以被当做一门C++课程的教材。本书面向已掌握C语言或其他类C语法知识的使用者。
本书主要章节有:
* 命名空间
* 字符串——C提供的是最基础的字符串支持
* I/O流库——提供了一个基于类概念的输入/输出库
* 类——C提供了两种结构化不同类型数据的方法。C语言的结构体包含多种类型的数据成员而C语言的共用体同样可以定义不同类型的数据成员。本章介绍的类也是一种结构体但是它的内容对外部世界来说是默认不可访问的。
* 静态数据和函数
* 内存管理——审视C++中能够操作内存分配的操作符
* 异常——允许C++程序执行受控的非本地返回命令避免了使用longjmp非局部跳转和setjmp激活非局部跳转函数的缺陷。
* 操作符重载——介绍通用的操作符重载
* 抽象容器
* 继承——派生的另外一个特性。 本章演示基类指针可能被用来指向派生类的对象。
* 多态——继承的一种特殊形态
* 友元机制——介绍friend关键词以及它的使用原则
* 成员指针——定义成员指针及其用法,静态成员指针,指针长度
* 嵌套类——当嵌套类与其外围类有概念上的紧密联系时会被使用
* 标准模板库STL——包含容器、通用算法、迭代器、函数对象、分配器、适配器和数据结构的通用库。这些算法使用的数据结构都是抽象意义的因此算法实际上可以使用任何数据类型。
* 泛型算法——涵盖标准模板库中的泛型算法
* 函数模板——探索模板独特的句法。介绍模板类型参数与模板非类型参数和函数模板等概念并且提供模板的多个案例。
* 类模板——讨论构建与使用类模板
* 进阶模板用法——一份简短的模板元编程主要特性与模板的微妙关系的介绍
本书有HTMLPDFPostScript和txt版本。它是基于GNU General Public协议发布的免费书籍。
![Introduction to Design Patterns in C++ with Qt 4, An](https://i1.wp.com/www.ossblog.org/wp-content/uploads/2017/02/DesignPatternsQt4.jpeg?resize=200%2C264&ssl=1)
### [An Introduction to Design Patterns in C++ with Qt 4][5]
作者Alan Ezust, Paul Ezust (656页)
本书从介绍C++基础知识面向对象概念UML统一建模语言和核心Qt类开始。进而转向更高级的编程概念如Qt modules和设计模式。最后严苛的印证了重要的C++特性。其中涵盖了非常优秀的对函数、继承和多态的讲解。
本书不需要具备任何C或者C++编程经验前提并且被设计为普适用途。它也为教学工作者准备了Qt案例练习答案以及课程PPT.
本书是Bruce Perens开源系列中的一部分。所有在此系列中的书籍都是基于Open Publication License V1.0及更新版本发布的。
![How to Think Like a Computer Scientist: C++](https://i1.wp.com/www.ossblog.org/wp-content/uploads/2017/02/ComputerScientistC.jpg?resize=200%2C250&ssl=1)
### [How to Think Like a Computer Scientist: C++][6]
作者 Allen B. Downey (191页)
本书是使用C++编程语言进行软件设计的一本简洁并友好的介绍书籍。本书的目的是通过讲解最最基础的概念并且以读者轻易接受的节奏逐步增加新内容来培养没有编程经验的读者成为未来的开发者。
本书提供的有价值的内容包括:
* 变量、表达式和语句
* 函数
* 条件语句与递归
* 丰富的函数
* 迭代
* 字符串
* 向量
* 成员函数
* 对象的向量
* 向量的对象
* 类与不变量
* 文件输入输出和apmatrixes
本书是一本基于Creative Commons Attribution-NonCommercial 3.0 Unported协议下的免费书籍。
![C++ GUI Programming with Qt 3](https://i0.wp.com/www.ossblog.org/wp-content/uploads/2017/02/CQt3.jpeg?resize=200%2C262&ssl=1)
### [C++ GUI Programming with Qt 3][7]
作者 Jasmin Blanchette, Mark Summerfield (464 页)
最新发布的稳定Qt版本是5.8. 本书指导读者如何使用Qt3编写GUI程序虽然Qt3最近一次更新是2004年但是本书仍然有大部分内容对Qt4和Qt5有效。
本书不是一本面向初学者的书需要读者对C++有基本的理解。
本书向读者介绍了使用Qt进行GUI应用编程所有的概念和需要的练习。本书不仅详尽的对待核心内容而且也提供了特别并高阶的学习材料。
本书是Bruce Perens开源系列中的一部分。所有在此系列中的书籍都是基于Open Publication License V1.0及更新版本发布的。
![Open Data Structures (in C++)](https://i2.wp.com/www.ossblog.org/wp-content/uploads/2017/02/OpenDataStructures.jpg?resize=200%2C300&ssl=1)
### [Open Data Structures (in C++)][1]
作者 Pat Morin (336页)
本书教导读者设计和分析基础数据结构以及如何使用C++实现。 它涵盖了对如下数据结构的分析和实现序列列表队列优先队列无序辞典有序词典以及图。作者的动力在于向大学计算机科学的学生提供一条免费的途径来学习数据结构。但是并不打算成为介绍C++编程语言或者C++标准模板库的一本书。不过它可以帮助程序员理解标准模板库的数据结构是如何实现的以及这种实现为何如此高效。
章节内容覆盖了基于数组的列表,链表,分级链表,哈希表,二叉树(又包含了随机二叉搜索树,替罪羊树,红黑树)。之后的章节还包括堆,排序算法(比较、计数和基数排序),图,整数的数据结构和外部存储器搜索。
本书基于Creative Commons Attribution协议发布。免费的HTML,PDF均已发布本书的LaTeX版本Java/C++/Python源代码都可以从GitHub下载。也有纸质书版本可供购买。本书已被翻译为斯罗维尼亚语和土耳其语。
![Cross-Platform GUI Programming with wxWidgets](https://i1.wp.com/www.ossblog.org/wp-content/uploads/2017/02/wxWidgets.jpeg?resize=200%2C264&ssl=1)
### [Cross-Platform GUI Programming with wxWidgets][8]
作者 Julian SmartKevin Hock和Stefan CsomorBrifll (744 页)
wxWidgets是一个流行的C++库供开发者使用单一的代码基础为WindoswMac OS Linux和其他平台创建应用。它可以支持非常广泛的图形处理库。
本书从简单的介绍和准备开始章节开始,主要内容包括:
* 事件处理
* 窗口基础
* 画图
* 输入事件处理
* 使用sizers进行窗口布局
* 使用标准对话框
* 创建自定义对话框
* 图像编程
* 剪贴板与拖放动作
* 高阶窗口类
* 文件和数据流
* 内存管理,调试和错误检查
* 编写国际通用应用
* 编写多线程应用
* wxSocket编程
* 处理文档和浏览
* 日臻完美你的应用
本书是Bruce Perens开源系列中的一部分。所有在此系列中的书籍都是基于Open Publication License V1.0及更新版本发布的。
![The Rook's Guide to C++](https://i0.wp.com/www.ossblog.org/wp-content/uploads/2017/02/RooksGuide.jpg?resize=200%2C300&ssl=1)
### [The Rooks Guide to C++][2]
作者 Jeremy Hansen (160页)
章节中包含变量常量输入输出数据类型和转换条件判断语句ifelse和else if, switch语句字符串循环数组函数和作用域。之后的章节主要集中解决问题和定位问题包括预处理器、高等代数、文件输入输出、指针、动态数据、类和抽象、分离编译和标准模板库。
本书大部分都是由25位Norwich大学的学生于一个黑客马拉松周末写成。当然不敢说毫无缺点但还是一本相当不错的书。它被基于Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported协议发布。同时在亚马逊也有本书的纸质版可供购买。
![An Introduction to GCC](https://i1.wp.com/www.ossblog.org/wp-content/uploads/2017/01/IntroductionGCC.png?resize=200%2C300&ssl=1)
### [An Introduction to GCC][9]
作者 Brian Gough (144页)
本书介绍了GCC同时介绍了GNU C和C++编译器gcc和g++均属于GNU编译器集合GCC
本书解释了如何单独使用编译器。作者通过数年对邮件列表中发表的问题的观察撰写本书带领读者直接接触GCC最重要的选项。
章节简介:
* 介绍
* 编译一个C程序——描述了如何使用gcc编译C程序。程序可能是由单独文件或者多个文件编译而成也可能使用系统库和头文件。
* 编译选项——描述gcc中可以使用的编译器中常用的选项。这些选项可以修改本地库和包含文件的搜索路径配置额外的warning和调试信息使能预处理器宏指令和C特有语言。
* 使用预处理——描述了属于GCC包内的GNU C预处理C++程序的用途。 预处理将宏定义在源代码被编译前展开。预处理会在GCC编译C或者C++程序时自动被调用。
* 以调试为目的编译——提供-g选项使目标文件和可执行文件中存储额外的调试信息。当出现错误时这些调试信息允许从特定的机器指令回溯到源代码中相应的行。
* 优化编译——GCC是一个不断优化的编译器。它提供了大量的选项来使其生成的可执行文件的速度得到提升并尽量减小可执行文件的大小。
* 编译一个C++程序——描述了如何使用GCC来编译使用C++编写的程序,以及针对这门语言特定的命令行选项。
* 平台相关的选项——描述了一些通用平台上可用的选项如Intel和AMD x86选项x86拓展选项x86 64位处理器选项DEC Alpha选项SPARC选项POWER/powerPC选项复合架构支持以及浮点相关问题。
* 问题定位——GCC提供了几项帮助和诊断选项来帮助用户在编译过程中定位问题。
* 编译器相关工具——介绍了大量能够和GCC组合使用的有效工具。包括 用来创建库的GNU压缩器ar,以及GNU性能和覆盖测试工具gprof和gcov。
* 编译器如何工作——描述了关于GCC如何将源代码转换为可执行程序的更多细节。编译是一个涉及到多种工具的多级过程包括GNU编译器自身通过gcc或者g++前端GNU汇编器as以及GNU链接器ld。编译过程中一个完整的工具集合被称为是工具链。
* 检查编译后的文件——描述了多种有用的工具来检查可执行文件和目标文件的内容。
* 常见错误消息——描述了gcc和g++产生的最常见的错误和警告信息。每一个案例都伴随着错误和警告产生的原因,相应的例子和可能解决问题的建议。
* 获得帮助——如果读者碰到了本书中未能涵盖的问题还有多种参考手册更详细的描述了GCC和编程语言相关的主题。
本书是基于GNU Free Documentation协议出版的。
此外还有一些C++书籍可以免费下载,但是那些并不是基于开源协议发布的,或者作者没有指定一个协议。这类书籍包括:
[Thinking in C++, 第二版, 卷一,卷二][14]  作者Bruce Eckel (卷二增加了Chuck Allison)
[C++ In Action:Industrial Strength Programming ][15] 作者Bartosz Milewski
最后我对刚入门的C++新手的建议一定是 [Programming — Principles and Practice Using C++ (第二版)][16]。普遍认为这是最合适的入门书籍由C++的创始人书写,物超所值。
--------------------------------------------------------------------------------
via: https://www.ossblog.org/master-c-programming-with-open-source-books/
作者:[Steve Emms][a]
译者:[xiaow6](https://github.com/xiaow6)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.ossblog.org/author/steve/
[1]:http://opendatastructures.org/ods-cpp/
[2]:https://rooksguide.org/
[3]:https://theboostcpplibraries.com/
[4]:http://www.icce.rug.nl/documents/cplusplus/
[5]:http://www.informit.com/store/introduction-to-design-patterns-in-c-plus-plus-with-9780131879058
[6]:http://greenteapress.com/thinkcpp/index.html
[7]:http://www.informit.com/store/c-plus-plus-gui-programming-with-qt-3-9780131240728
[8]:http://www.informit.com/store/cross-platform-gui-programming-with-wxwidgets-9780131473812
[9]:http://www.network-theory.co.uk/docs/gccintro/
[10]:https://www.ossblog.org/author/steve/
[11]:https://www.ossblog.org/master-c-programming-with-open-source-books/#comments
[12]:https://www.ossblog.org/category/books/
[13]:https://www.ossblog.org/category/programming/
[14]:http://mindview.net/Books/TICPP/ThinkingInCPP2e.html
[15]:http://www.relisoft.com/book/
[16]:http://stroustrup.com/Programming/