拋棄你對(duì)于C語(yǔ)言的那些陳舊觀念吧。你應(yīng)該重 新學(xué)習(xí)這門(mén)編程語(yǔ)言,它早已改變了過(guò)去的面貌。在 《21世紀(jì)C語(yǔ)言(影印版)》中,你將了解到在其他C語(yǔ) 言書(shū)籍中所缺失的那些技術(shù)。C語(yǔ)言不僅僅是現(xiàn) 代編程語(yǔ)言的基石,它本身也是一門(mén)現(xiàn)代語(yǔ)言,尤其 適合于編寫(xiě)高效的、尖端的應(yīng)用程序。你需要放棄那 些只有在大型機(jī)時(shí)代才有意義的舊習(xí),轉(zhuǎn)而選擇相應(yīng) 的工具來(lái)使用這門(mén)改進(jìn)的極其簡(jiǎn)單的語(yǔ)言。無(wú)論目前 你是哪門(mén)編程語(yǔ)言的擁護(hù)者,你都不得不承認(rèn)C語(yǔ)言 也很出色。
《21世紀(jì)C語(yǔ)言(影印版)》的作者是克萊門(mén)斯。
是否你的C語(yǔ)言編程環(huán)境被限制在VI和CC上?是否C語(yǔ)言的內(nèi)存管理機(jī)制依然像20世紀(jì)90年代那樣困擾你?BEN KLEMENS提出了這些常見(jiàn)的問(wèn)題,并且展示了的工具如何使得C語(yǔ)言編程變得簡(jiǎn)單——能夠幫助你調(diào)試、跟蹤內(nèi)存泄露、組織編譯過(guò)程和管理源代碼版本。 《21世紀(jì)C語(yǔ)言(影印版)》的作者是克萊門(mén)斯。
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