Hacktical C:C 编程语言的实用Hacker指南

[正文内容]

导航菜单

切换导航

codr7 / **hacktical-c ** Public

一个实用的 C 编程语言 Hacker 指南。 52 stars 2 forks Branches Tags Activity Star Notifications 您必须登录才能更改通知设置

其他导航选项

codr7/hacktical-c

main BranchesTags Go to file Code

Folders and files

Name| Name| Last commit message| Last commit date
---|---|---|---

Latest commit

History

194 Commits
.github| .github
chrono| chrono
dsl| dsl
dynamic| dynamic
error| error
fix| fix
list| list
macro| macro
malloc1| malloc1
malloc2| malloc2
set| set
slog| slog
stream1| stream1
task| task
vector| vector
.gitignore| .gitignore
Makefile| Makefile
README.md| README.md
TODO.org| TODO.org
benchmarks.c| benchmarks.c
tests.c| tests.c
View all files

Repository files navigation

Hacktical C

一个实用的 C 编程语言 Hacker 指南。 为了纪念Dennis Ritchie,这位世界上最伟大的 Hacker 之一。

关于本书

本书假设读者具备基本的编程知识。我们不会花费大量时间和篇幅来解释基本特性,除非它们与其他主流语言相比有重要的不同之处。相反,我们将专注于实用技术,以充分利用 C 提供的强大功能和灵活性。

关于作者

你可以说程序员分为两种,他们有着非常不同的动机:学者和 Hacker。我一直认为自己是 Hacker。我喜欢解决棘手的问题,并且更喜欢使用不会妨碍我的强大工具。对我来说,软件的全部意义在于实际应用,在于改变现实世界。

自从 1985 年圣诞节得到一台 Commodore 64 以来,我几乎每天都在编写代码,并且自 1998 年以来一直在不同的公司/岗位上从事专业工作。

我从 Commodore 64 上的 Basic 入门,然后学习了 Amiga 500 上的汇编语言,PC 上的 Pascal,随后是 C++。

很长一段时间,我根本不在乎 C,与其他语言相比,它看起来非常原始。但是随着时间的流逝,我逐渐了解到软件中最可怕的敌人是复杂性,并开始更加认真地对待 C。

从那时起,我编写了大量的 C 代码;在此过程中,我掌握了许多有趣且鲜为人知的技术,这些技术帮助我充分利用了该语言,并欣赏它的优点。

捐赠

如果您希望看到这个项目成功,欢迎所有贡献。

我决定使用开放许可发布该项目,以使尽可能多的人受益,因为我相信知识应该自由共享。但是我也相信对创作者的补偿;我需要处理的经济压力越小,我就可以投入到该项目中的时间和精力就越多。

该存储库已设置为通过 Stripe 和 Liberapay 进行赞助,或者,您可以使用 BTC (bitcoin:18k7kMcvPSSSzQtJ6hY5xxCt5U5p45rbuh) 或 ETH (0x776001F33F6Fc07ce9FF70187D5c034DCb429811)。

为什么选择 C?

我相信 C 现在和将来都非常重要的原因是,它以一种主要可移植的汇编语言的形式存在,提供了类似的自由度。

C 不会试图阻止你犯错。它对你的代码几乎没有意见,并且很乐意假设你确切地知道自己在做什么。自由与责任。

如今,许多程序员会建议选择一种更严格的语言,而不管要解决的问题是什么。这些程序员中的大多数人不会信任自己使用 C 提供的自由度,许多人甚至懒得正确地学习该语言。

由于包括 Internet 在内的数字革命的大部分基础都是使用 C 构建的,因此它被指责为许多问题,这些问题更多是由于我们在设计和构建复杂的软件方面的不成熟,而不是编程语言本身的问题。

事实是,由人类创建的任何相当复杂的软件系统都会存在错误,无论使用什么技术来创建它。使用更严格的语言有助于减少某些类型的错误,但代价是降低了表达解决方案的灵活性,并增加了创建软件的工作量。

程序员喜欢说您应该选择“适合这项工作的工具”;许多人未能理解的是,唯一有能力决定哪些工具是正确的人,是创建软件的人。在争论和胁迫程序员选择其他人喜欢的工具上浪费了大量精力。

构建

makefile 需要 gccccachevalgrind 才能完成其工作。

git clone https://github.com/codr7/hacktical-c.git
cd hacktical-c
mkdir build
make

平台

由于 Unix 的全部意义在于 C,而 Linux 目前是支持最好的 Unix,因此我建议使用 Linux 作为编写 C 的平台。仅仅能够访问 valgrind 就非常宝贵。不幸的是,Microsoft 长期以来一直忽视 C,其编译器远远落后于其他编译器。但是,Windows 确实提供了一种以 WSL2 形式运行 Linux 的方式,从我的经验来看,它运行良好。

扩展

本书中的代码使用了几个 GNU 扩展,这些扩展尚未纳入 C 标准。特别是 cleanup 属性、多行表达式和嵌套函数。

一些开发人员像躲避瘟疫一样避免扩展,而另一些开发人员则乐于将它们用于一切事物。我介于两者之间;当没有好的标准替代方案时,可以放心地使用扩展,尤其是当 gccclang 都支持它们时。本书中使用的所有扩展(嵌套函数除外,目前仅 gcc 支持)都属于该类别。

我可以想到一个功能 hc_defer(),如果没有扩展,目前绝对不可能做到。在其他情况下,替代解决方案只是不太方便。

基准测试

某些章节带有基准测试,make build/benchmark 构建并运行所有基准测试。

章节

内容的安排形成了一个自然的递进关系,后面的章节建立在已经介绍过的概念之上。也就是说,可以随意跳过,但要做好回溯以填补空白的准备。

关于

一个实用的 C 编程语言 Hacker 指南。

资源

Readme Activity

Stars

52 stars

Watchers

2 watching

Forks

2 forks Report repository

Releases

No releases published

Sponsor this project

Learn more about GitHub Sponsors

Packages 0

No packages published

Languages

Footer

© 2025 GitHub, Inc.

Footer navigation

You can’t perform that action at this time.