Around the turn of the century people stopped going crazy with macros, globals and exposing struct definitions in header files, at least this is where I draw the line between old and new school
> exposing struct definitions in header files
Hiding the struct like:
typedef struct foo_t foo_t;
/* ... */
foo_t *foo_new();
kinda forces heap allocs. There are times when you want to allocate on the stack, and not use alloca.Most of the time, I still keep struct definitions in header files, but API wise I always write functions or macros for anything that touches them and discourage direct access to struct members. Depending on the use case of course. Abstract types have their uses too.
But, hum hum, What is considered non-old-school really modern C? Are there any new non-trivial C programs or systems anymore?
I look at the Linux kernel and some drivers occasionally, and possibly do some changes in some drivers and tools related to DVB and media, but I never look at "new" C code.