"HG King via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > #undef strcpy > -#define strcpy(x,y) BANNED(strcpy) > +#define strcpy(x,y) BANNED_EXPL(strcpy, buffer_overflow_risk) That does not help programmers that much (the above does not say what to use instead, for example), and the mechanism inherently does not give you sufficient space to give helpful guidance. Adding a comment around each of these definition may be OK. Upon seeing foo_is_a_banned_function, somebody new to the codebase would look for where it is banned, and find the above, so that is a good place to give guidance.