Commenter Worf remarked, "My one wish is that
#warning would be supported."
I always find it interesting when people say "I wish that Microsoft would stop following standards," since the
#warning directive is nonstandard.
The Microsoft C/C++ compiler implements the feature in a method compatible with the standard, namely via a
#pragma message("You really shouldn't be doing that.")
If you want to warn people away from deprecated functionality, you can use the
#pragma deprecated() directive or the even more convenient (but more standards-troublesome)
__declspec declaration specifier. The declaration specifier is much more convenient than the preprocessor directive because you can use it in a macro, and you can attach it to specific overloads of a function. (It's also more standards-troublesome because, while it is still permitted by the standard because it begins with a double-underscore, it is also not required to be ignored by compilers which do not understand it.)
In my experience, however, printing messages during compilation is of little consequence. Print all the messages during compilation as you want; nobody will read them. The only thing that gets attention is an actual warning or error. (And in many cases, only the error will get any attention at all.)