Writing Bug-Free C Code (1995)
duckware.com
duckware.com
Unless you know that you're going to be targeting truly ancient architectures/platforms, C99 really is the absolute minimum thing to be using these days when developing in C. It's 15 years old, it's not "new" or "non-standard" or "non-portable".
Edit: Of course I'm aware that Visual Studio doesn't support C99, so I guess that sorts under "truly ancient architectures/platforms", then. For C development, Windows' flagship development environment is ancient. I know it's a great IDE, but it's not a great C compiler since it doesn't support the language any more.
Specially in a world where most APIS are either .NET or transitioning to COM/Windows Runtime.
At last year's "Connect(); Microsoft Visual Studio vNext & Azure", they confirmed the C++ focus for native code, besides the upcoming .NET Native.
https://channel9.msdn.com/Events/Visual-Studio/Connect-event...
The C99 support that has been added was what is required by C++ standard and some specific customers.
Even the new C runtime is actually implemented in C++ with the functions exposed as extern "C".
http://blogs.msdn.com/b/vcblog/archive/2014/06/10/the-great-...
Personally I think it is bound to the adoption of the Windows Store and the Universal App model.
http://blogs.msdn.com/b/vcblog/archive/2014/06/18/crt-featur... from June of last year says in part:
In the Visual Studio "14" CTP we have fully implemented the C99 Standard
Library, with the exception of any library features that depend on compiler
features not yet supported by the Visual C++ compiler (notably, <tgmath.h>
is not implemented). There are undoubtedly some remaining conformance issues--
we know of a few, including that _Exit is missing and wcstok has the wrong
signature, and we are working to fix these.
"CTP" == "Community Tech Preview", i.e. a beta.Sorry for rambling, but this brought up some pleasant memories... :)
I think the title is a bit strongly worded, but other than that it is a really good book. When writing large-ish applications in C, one has to develop strategies for dealing with some of C's problems, and even if you disagree with some of the author's suggestions (or, as somebody else pointed out, find them obsolete because of C's ongoing evolution), it gets you thinking about those issues.
EDIT: Whether C is the right language for writing large-ish applications is a different issue, but in the early nineties, it was a relatively prudent choice, and if a program is popular/useful enough, someone has got to do the maintenance.
Actually this is a link to that book..
Please note that this is from a different time and space, and that you should not apply such rules to every language.
Archived: https://web.archive.org/web/20150327121925/http://www.duckwa...
However, when I run across someone who helpfully wrapped the standard interfaces in the code I need to maintain. I want to burn him alive.