Found in 19 comments on Hacker News
yarrel · 2019-01-11 · Original thread
For C:

Pointers, stacks (one in ever 23.7 bugs is a stack smashing bug), bit bashing and endianness, types and coercion at the byte level (see also: pointers, bit bashing), C strings, the stupid rules about when a variable's value is actually written to memory that need to die in a fire, memory allocation/clearing/copying/ownership/freeing, ALWAYS CHECK RETURN CODES, what the heck an lvalue is.

This book is fun:

macintux · 2018-06-15 · Original thread
I can't speak to the utility of either, but a couple of resources I've found recently:

tehwalrus · 2018-04-01 · Original thread
Yeah, just return the struct by value.

By the way, if you do C programming and haven't, read 21st Century C:

fipar · 2018-01-21 · Original thread
I really liked this one: (21st century C, in case the link is wrong as I’m on my phone now)
ZenoArrow · 2017-09-08 · Original thread
> "Nevertheless, I don't think anyone should call themselves a (true) programmer unless they know C."

You could make an even stronger claim about knowing an assembly language. The point being that understanding how a computing device works is helpful in getting the best out of it. If that wasn't your point, then C is no more special than any other popular programming language.

Also, whilst I only know the basics of C, it's pretty clear things have moved on considerably since the days of K&R. It doesn't cover any of the enhancements included in C99 and C11, nor does it cover the tooling and coding conventions (the ones that help avoid problems) that have become commonplace since 1989.

For a more up-to-date reference, I've heard good things about 21st Century C:

tehwalrus · 2017-03-16 · Original thread
21st Century C is very very good.

Enjoyable to read through, covers tools as well as the language, and a very good reference of good practise. It covers the basics and then goes into depth on a few of the things C is supposed to be bad at, demonstrating good ways to work (strings, threads, OOP, libraries).

I have a copy on my bookshelf at work, and have been referring to it extensively this week (exposing a C entry point to a C++ world...) It has steered me away from some fairly silly things a couple of times!

It does disagree quite strongly with the article though.

agentultra · 2017-02-06 · Original thread
One of the greatest non-free books, IMO, is 21st Century C and I cannot recommend it enough.

agentultra · 2016-01-08 · Original thread
Nice list!

I like using anonymous structs with variable initializers to provide parameters to functions with default values -- nice and clean!

C99 is not your grandparents' C. It has kept up with the times.

A more thorough resource I cannot recommend highly enough: 21st Century C[0]


pwaring · 2015-03-17 · Original thread
There's a newer edition available which has been published recently:

wschroed · 2015-03-17 · Original thread
I highly recommend "21st Century C" ( as a tour of modern C programming, including use of C99 features. It goes over C tooling (profiling, debugging, testing, cross-platform deployment), and explores C99.
benwaffle · 2015-02-09 · Original thread
there is also 21st Century C:

half of it is about tools (valgrind, make, autoconf) and it also talks about libraries (sqlite, gsl, etc...) of course there are some chapters about the language itself

pwaring · 2014-07-20 · Original thread
There's 21st Century C from O'Reilly:

It has mixed reviews - my impression from reading it was that if you agree with the author's choice of tools, it's a good read. There's supposedly a new edition coming out in September.

There's also Learn C the Hard Way:

I've struggled to find any other modern books on C programming.

hepek · 2013-12-23 · Original thread
Reminded me of a very good book called "21st Century C"

jessaustin · 2013-01-28 · Original thread
It's been a while since I used C very much, but news like this plus the great new 21st Century C, from Ben Klemens and O'Reilly has me reconsidering that. That book says those who complain the standard doesn't do enough should look at POSIX and libraries like GLib for help.
runn1ng · 2012-12-26 · Original thread
When I look at the page of the book itself

what I noticed was

> Use Autotools, C’s de facto cross-platform package manager.

Seeing the word "autotools" sends familiar, but scary shiver down my spine. After some years with maven and CPAN, I don't ever want to go back to autotools, no thanks.

chanux · 2012-11-16 · Original thread
On O'reilly - ebooks minus the DRM -
telemachos · 2012-10-02 · Original thread
O'Reilly has a forthcoming book 21st Century C[1] by Ben Klements. I haven't read it yet, but it clearly aims to be a new look at C programming.


Fresh book recommendations delivered straight to your inbox every Thursday.