/RTC - Run-Time Error Checks (Windows CE 5.0)
This option enables run-time error checks.
/RTC1 /RTCc /RTCs /RTCu
The /RTC option is supported by x86 microprocessors only.
The run-time error checks feature is enabled and disabled by the /RTC group of compiler options and the runtime_checks pragma.
|/RTC1||Is equivalent to /RTCsu.|
|/RTCc||Reports when a value is assigned to a smaller data type that results in a data loss. For example, if a value of type short 0x101 is assigned to a variable of type char.
This option reports situations where you intend to truncate, as in a situation where you want the first eight bits of an int returned as a char.
Because /RTCc causes a run-time error if information will be lost as a result of the assignment, you can mask off the information you need to avoid a run-time error as a result of /RTCc. For example:
|/RTCs||Enables stack frame run-time error checking:
|/RTCu||Reports when a variable is used without having been initialized. For example, an instruction that generates Compiler Warning C4701 may also generate a run-time error under /RTCu. Any instruction that generates Compiler Warning C4700 will generate a run-time error under /RTCu. |
However, consider the following code fragment:
If a variable could have been initialized, it will not be reported at run time by /RTCu. For example, after a variable is aliased through a pointer, the compiler will not track the variable and report uninitialized uses. In effect, you can initialize a variable by taking its address. The & operator works like an assignment operator in this situation.
Note If you compile your program at the command line using any of the /RTC compiler options, any pragma optimize instructions in your code will silently fail. This is because run-time error checks are not valid in a release (optimized) build.
The __MSVC_RUNTIME_CHECKS preprocessor directive will be defined when you use any /RTC option or /GZ - Catch Release Errors in Debug Build.
Send Feedback on this topic to the authors