抛弃你对于C语言的那些陈旧观念吧。你应该重 新学习这门编程语言,它早已改变了过去的面貌。在 《21世纪C语言(影印版)》中,你将了解到在其他C语 言书籍中所缺失的那些技术。C语言不仅仅是现 代编程语言的基石,它本身也是一门现代语言,尤其 适合于编写高效的、尖端的应用程序。你需要放弃那 些只有在大型机时代才有意义的旧习,转而选择相应 的工具来使用这门改进的极其简单的语言。无论目前 你是哪门编程语言的拥护者,你都不得不承认C语言 也很出色。
《21世纪C语言(影印版)》的作者是克莱门斯。
是否你的C语言编程环境被限制在VI和CC上?是否C语言的内存管理机制依然像20世纪90年代那样困扰你?BEN KLEMENS提出了这些常见的问题,并且展示了的工具如何使得C语言编程变得简单——能够帮助你调试、跟踪内存泄露、组织编译过程和管理源代码版本。 《21世纪C语言(影印版)》的作者是克莱门斯。
Preface
Part I.The Environment
1.SetYourself Up for Easy Compilation
Use a Package Manager
Compiling C with Windows
POSIX for Windows
Compiling C with POSIX
Compiling C Without POSIX
Which Way to the Library?
A Few of My Favorite Flags
Paths
Runtime Linking
Using Makefiles
Setting Variables
The Rules
Using Libraries from Source
Using Libraries from Source(Even if Your Sysadmin Doesn`t Want You To
Compiling C Programs via Here Document
Include Header Files from the Command Line
The Unified Header
Here Documents
Compiling from stdin
2.Debug,Test,Document
Using a Debugger
GDB Variables
Print Your Structures
Using Valgrind to Check for Errors
Unit Testing
Using a Program as a Library
Coverage
Interweaving Documentation
Doxygen
Literate Code with CW`EB
Error Checking
What Is the User`s Involvement in the Error?
The Context in Which the User Is Working
How Should the Error Indication Be Returned?
3.PackagingYourProject
The Shell
Replacing Shell Commands with Their Outputs
Use the Shell`s for Loops to Operate on a Set of Files
TestforFiles
fc
Makefiles VS.Shell Scripts
Packaging Your Code with Autotools
An Autotools Demo
Describing the Makefile with makefile.am
The configure Script
4.VersionControI
Changes via diff
Git`s Objects
The Stash
Trees and Their Branches
Merging
The Rebase
Remote Repositories
5.PlayingNicewithOthers
The Process
Writing to Be Read by Nonnatives
The Wrapper Function
Smuggling Data Structures Across the Border
Linking
Python Host
Compiling and Linking
The Conditional Subdirectory for Automake
Distutils Backed with Autotools
Part II.The Language
6.YOurPaIthePointer
Automatic,Static,and Manual Memory
Persistent State Variables
Pointers Without malloc
Structures Get Copied,Arrays Get Aliased
malloc and Memory—Twiddling
The Fault Is in Our Stars
All the Pointer Arithmetic You Need to Know
7.CSyntaxYouCanIgnore
Don`t Bother Explicitly Returning from main
Let Declarations Flow
Set Array Size at Runtime
Cast Less
Enums and Strings
Labels,gotos,switches,and breaks
gotO Considered
switch
Deprecate Float
8.Obstaclesand Oppounity
Cultivate Robust and Flourishing Macros
Preprocessor Tricks
Linkage with static and extem
Declare Externally Linked Elements Only in Header Files
The const Keyword
Noun—Adjective Form
Tension
Depth
The char const Issue
9.Text
Making String Handling Less Painful with asprintf
Security
Constant Strings
Extending Strings with asprintf
APean to strtok
Unicode
The Encoding for C Code
Unicode Libraries
The Sample Code
10.Better Structures
Compound Literals
Initialization via Compound Literals
Variadic Macros
Safely Terminated Lists
Foreach
Vectorize a Function
Designated Initializers
Initialize Arrays and Structs with Zeros
Typedefs Save the Day
A StyleNote
Return Multiple Items from a Function
Reporting Errors
Flexible Function Inputs
Declare Your Function.as printf-Style
Optional and Named Arguments
Polishing a Dull Function
The Void Pointer and the Structures It Points To
Functions with Generic Inputs
Generic Structures
11.Object-Oriented Programmingin C
What You Don`t Get(and Why You Won`t Miss It
Scope
Overloaded with Operator Overloading
Extending Structures and Dictionaries
Extending a Structure
Implementing a Dictionary
Base Your Code on Pointers to Objects
Functions in Your Structs
Count References,
Example:A Substring Object
An Agent—Based Model of Group Formation
12.Libraries
GLib
POS.IX
Using mmap for Gigantic Data Sets
Easy Threading with Pthreads
The GNU Scientific Library
SQLite
The Queries
libxml and cURL
Epilogue
Glossary
Bibliography
Index