プリプロセッサ
後発のC99規格やC11規格でもbool, true, false, offsetof(), noreturnなど、依然として小文字のマクロが標準仕様として追加導入されている。ただし、これらは本来キーワードとして定義されるべき構成要素を、互換性維持のためにやむをえずマクロとして定義したものである。なお、C99やC11で新しく追加されたこれらの小文字のマクロは、C言語の次期規格であるC2xにおいて廃止しキーワードとすることが検討されている。
C++のように、言語自体の機能によって定数やインライン関数およびジェネリックな関数テンプレートを記述可能な言語ではなるべく言語自体の機能を使い、プリプロセッサを排除して記述すべきだという意見が存在するが、互換性や慣習からプリプロセッサを利用した記述が行われる場面は依然多い。Javaではプリプロセッサは採用されなかった。C#では限定されたプリプロセッサが採用された。
また、プリプロセッサを積極的に用いてメタプログラミングを行うといった高度な用法もある。