> The badness of the C preprocessor starts much earlier with things like include files, and the fact that you can't statically analyze the code in any reasonable way.
Static analysis hardness or easyness has _nothing_ to do with preprocessing, because static analyzer can preprocess code in a very same way compiler will so both will analyze the very same stream of tokens.
> The benefit from the preprocessor is absurdly small.
It's hard to quantify "general good" of something complex as programming language macro system with all consequences included.
But it's quite easy to see which one is more powerful wrt expressiveness.
Your primitive macro system _forces_ me to write code like this:
#ifdef CONFIG_AUDITSYSCALL #define INIT_IDS \ .loginuid = -1, \ .sessionid = -1, #else #define INIT_IDS #endif
#define INIT_TASK(tsk) \ { INIT_IDS }
instead of more natural.
#define INIT_TASK(tsk) \ {\ #ifdef CONFIG_AUDITSYSCALL .loginuid = -1, \ .sessionid = -1,\ #endif }
> The badness of the C preprocessor starts much earlier with things like include files, and the fact that you can't statically analyze the code in any reasonable way.
Static analysis hardness or easyness has _nothing_ to do with preprocessing, because static analyzer can preprocess code in a very same way compiler will so both will analyze the very same stream of tokens.
> The benefit from the preprocessor is absurdly small.
This is subjective and unquantifiable.