Free Pascal/Lazarus is also near the top of that list, and it lacks a bunch of constructs that make handy footguns.<p><pre><code> It doesn't do macros.
It doesn't have all the .H files.
It doesn't default to null terminated strings
</code></pre>
It also has a lot of nice features<p><pre><code> Begin/End make it easy to see blocks
It has clear syntax for dealing with pointers. @P is the address of P, P^ is what the pointer P points to
It makes it easy to tell assignment := from equality tests =
It defaults to passing function parameters by value, but can also pass by reference, or pointer.
It does separate compilation (units)
Strings are memory managed for you, counted, and can even have nulls in them.
Identifiers aren't case sensitive.
It now supports for .. each in loops
</code></pre>
You can even participate in the Google Kickstart rounds in free pascal to hone your skills.