Many moons ago I cut C code for a living, primarily while maintaining a POP3 server that supported a wide range of OSs (Linux, *BSD, HPUX, VMS ...).  I'm planning to polish the rust off my C skills and learn a bit about language implementation by coding a simple FORTH in C.But I'm wondering how (or whether?) have things changed in the C world since 2000.  When I think C, I think ...comp.lang.cANSI C wherever possible (but C89 as C99 isn't that widely supported)gcc -Wall -ansi -pedantic in lieu of static analysis toolsEmacsCtagsAutoconf + make (and see point 2 for VMS, HP-UX etc. goodness)Can anyone who's been writing in C for the past eleven years let me know what (if anything ;-) ) has changed over the years?(In other news, holy crap, I've been doing this for more than a decade).
C programming in 2011
programming languages;c;language agnostic
It's really hard for me to think back in time like Wow, what was C programming like 10 years ago?, but I can talk about some things that I know I'm doing differently.While you can usually still summon someone like Peter Seebach on comp.lang.c for help on a particularly goofy bug that you suspect might be language related, most if not all C programming questions get exceptional answers on Stack Overflow.Static analysis is still kind of painful. Splint (at least as far as I know) doesn't deal with C99 so well, coverage graphs are still a bit of a pain to visualize. GCC warnings have improved quite a bit (in quotes because that depends on who you ask).Valgrind is the saint of all memory error checkers and usually points you to problems in your code that no static analysis tool would / could find. It's not 100% perfect, but I don't think it could be. I very seldom have to touch GDB these days, which (nothing personal) is just fine with me. The Valgrind massif tool is a really nice heap profiler as well.There's always new extensions in GCC, some of them subtle, so -pedantic is a good idea if portability is a big concern. For the novice / rusty programmer, it's sometimes easy to confuse extensions with 'hidden' language features.  CCAN has emerged (think CPAN, but for C) and is starting to take off. There's a lot of useful gems there, including an adaptation of TAP which is an awesome testing tool. Strings in C still suck, but the number and quality of libraries to help deal with them has surely gone up in the last ten years.SCons and CMake are increasing in popularity for build configuration. Autoconf / Automake / Libtool are still widely used, but many people feel a bit too limited by M4. Still, if that's the system you like to use, the Autoconf macro archive is still alive and well.There are obviously more editors available today. I've yet to find an IDE that didn't get in my way when working with C, but that's probably because I'm an old, crotchety, Sanka drinking evangelist for simplicity. Overall, though, I wouldn't say life (as far as C goes) is even close to profoundly different than it was 10 years ago. But, in many ways, it's actually a bit easier. It's hard to attribute that to tools over experience though.