True there is a danger in using this macro if it is used incorrectly. However it can be safely implemented, by using the macro to make a char array copy of the CString in situations where legacy code only accepts char pointers. Additionally it can be used as a function parameter if ( and this is obviously a major caveat), the function is known not to change the passed parameter or where the compiler makes local copies of the passed parameter.

It is important to remember that it is a macro and therefore does not have any error checking etc.,and any usage needs to take that into account.