Why are MACROs not sufficient and/or why are MACROs provided in a C++ library?
MACROs may pollute the global namespace, and are politically incorrect, but may be most efficient, for example in embedded systems where every byte is precious, and can be used in other languages, like C.