The _tolower macro is equivalent to the tolower function except that its argument must be an uppercase letter (not lowercase, not EOF). As of OpenVMS Version 8.3 and to comply with the C99 ANSI standard and X/Open Specification, the _tolower macro by default does not evaluate its parameter more than once. It simply calls the tolower function. This avoids side effects (such as i++ or function calls) where the user can tell how many times an expression is evaluated. To keep the older, optimized _tolower macro behavior, compile with /DEFINE=_FAST_TOUPPER. Then, as in previous releases, _ tolower optimizes the call to avoid the overhead of a runtime call. The parameters are checked to determine how to calculate the result, thereby creating unwanted side effects. Therefore, when compiling with /DEFINE=_FAST_TOUPPER, do not use the _ tolower macro with arguments that contain side-effect operations. For instance, the following example will not return the expected result: d = _tolower (C++);