You missed the "with extra steps".
#define XXX_IMPL
#include "xxx.h"
And #include "xxx.c"
Are exactly the same trash. #define XXX_IMPL
#include "xxx.h"
And #include "xxx.c"
Are exactly the same trash.