I am fantastic on Linux kernel and on Clang compiler. This article teaches me what GNU extension characteristic will be when Linux kernel is accepting more modern C11 standard.
For example, Linux kernel use local labels, inline assembly and builtin functions heavily.
This article inspires me to persist studying in Linux kernel and Clang compiler.
As sibling mentioned, you can build the kernel with clang today. `make CC=clang`, and for whatever reason I've found that it produces code that's significantly more pleasant to step through under a debugger than gcc.
If anybody has an explanation for this I'd love to hear it.
Empty structures are useful, but behave weirdly. Structures containing a zero-size `char` array are much more portable.
Although `__builtin_choose_expr` isn't available in C++, it's trivial to implement using templates. Actually a lot of these are a reminder that GNU C exists for people who refuse to use C++ for political reasons.
`__builtin_types_compatible_p` is mostly not needed now that C11 `_Generic` exists.
For example, Linux kernel use local labels, inline assembly and builtin functions heavily.
This article inspires me to persist studying in Linux kernel and Clang compiler.
reply