runtime_checks
#pragma runtime_checks( "[runtime_checks]", {restore | off} )
Disables or restores the /RTC settings. You cannot enable a run-time check that was not enabled with a compiler option. For example, if you do not specify /RTCs, specifying #pragma runtime_checks( "s", restore)
will not enable stack (frame).verification.
The runtime_check pragma must appear outside a function and takes effect at the first function defined after the pragma is seen. The restore and off arguments turn options specified in the runtime_checks on or off.
The runtime_checks can be zero or more of the parameters shown in Table 2.3.
Table 2.3 Parameters of the runtime_checks Pragma
Parameter(s) | Type of run-time check |
---|---|
s | Enables stack (frame) verification. |
c | Reports when a value is assigned to a smaller data type that results in a data loss. |
m | Reports when a dereferenced pointer is based on an address that you did not allocate. |
These are the same letters used with the /RTC compiler option. For example:
#pragma runtime_checks( "sc", restore )
Note that the l or v form of the /RTC compiler option is not available for the pragma. If you want to detect memory leaks or mismatches in memory allocation and deallocation, you must use the /RTC compiler option.
Using the runtime_checks pragma with the empty string ("") is a special form of the directive:
- When you use the off parameter, it turns the run-time error checks, listed in the table above, off.
- When you use the restore parameter, it resets the run-time error checks to those that you specified with the /RTC compiler option.
#pragma runtime_checks( "", off ) . . . #pragma runtime_checks( "", restore )