/ RTC (błąd w czasie wykonywania kontroli)
Używany do włączania i wyłączania funkcji kontroli błąd w czasie wykonywania, w połączeniu z runtime_checks pragma.
/RTC1
/RTCc
/RTCs
/RTCu
Argumenty
1
Equivalent of /RTCsu.c
Raporty, gdy wartość jest przypisany do mniejszych typ danych i powoduje utratę danych.Na przykład, jeśli wartość typu short 0x101 jest przypisana do zmiennej typu char.Tej opcji raporty sytuacje, w których zamierzasz obcinania, na przykład, jeśli chcesz, aby pierwszych osiem bitów int zwracane jako char.Ponieważ /RTCc powoduje błąd w czasie wykonywania w przypadku utraty danego przydziału wszelkich informacji może maskować off informacje potrzebne do uniknięcia błąd w czasie wykonywania w wyniku /RTCc.Na przykład:
#include <crtdbg.h> char get8bits(int value, int position) { _ASSERT(position < 32); return (char)(value >> position); // Try the following line instead: // return (char)((value >> position) & 0xff); } int main() { get8bits(12341235,3); }
s
Pozwala układać w stos ramki run-time sprawdzanie błędów, w następujący sposób:Inicjowanie zmiennych lokalnych wartość różną od zera.Dzięki temu, aby zidentyfikować błędy, które nie pojawiają się w trybie debugowania.Istnieje większe prawdopodobieństwo zmiennych stosu nadal będzie zero w trybie debugowania w porównaniu do wydanej kompilacji z powodu optymalizacje kompilatora zmiennych stosu w wydanej kompilacji.Gdy program został użyty obszar jego stos, to jest nigdy nie zresetowany do 0 przez kompilator.W związku z tym stos kolejnych, niezainicjowanej zmiennych, które nawiązały w tym samym obszarze stosu może zwracać wartości po wykrojeniu wcześniejszego używania tej pamięci stosu.
Wykrywanie przepełnienia i opróżnienia zmiennych lokalnych, takich jak tablice./RTCsPodczas uzyskiwania dostępu do pamięci, która wynika z kompilatora uzupełnienia wewnątrz struktury nie wykryje przekroczenia.Odstęp od krawędzi może wystąpić przy użyciu Wyrównanie (C++), /ZP (Struct Członkowskie wyrównanie), lub pack, lub jeśli zamówienie elementy struktury w taki sposób, aby wymagać kompilatora, aby dodać odstęp od krawędzi.
Weryfikacji wskaźnik stosu, która wykrywa uszkodzenie wskaźnik stosu.Związanej z uszkodzeniem stosu wskaźnik może być spowodowane niezgodnością konwencji wywoływania.Na przykład, za pomocą wskaźnika funkcji, można wywołać funkcję w bibliotece DLL, która zostanie wyeksportowana jako __stdcall , ale zadeklarować wskaźnika do funkcji jako __cdecl.
u
Raporty użyto zmiennej bez posiadające została zainicjowana.Na przykład, instrukcja generuje C4701 może również generować błąd czasu wykonania w ramach /RTCu.Wszelkich instrukcji, która generuje Kompilator ostrzeżenia (poziom 1 i poziom 4) C4700 wygeneruje błąd czasu wykonania w ramach /RTCu.Jednakże należy rozważyć następujący fragment kodu:
int a, *b, c; if ( 1 ) b = &a; c = a; // No run-time error with /RTCu
Jeśli zmienna może został zainicjowany, nie zostanie ona zgłoszona w czasie wykonywania przez /RTCu.Na przykład po zmienna jest aliasowany za pomocą wskaźnika, kompilator będzie nie śledzić zmiennej i Raport niezainicjowany zastosowań.W efekcie można zainicjować zmienną poprzez jego adres.& operator działa jak operator przypisania w tej sytuacji.
Uwagi
Błąd w czasie wykonywania kontroli są sposobem na znalezienie problemów w kodzie jazdy; Aby uzyskać więcej informacji, zobacz Jak: Użyj macierzystym kontroli Run-Time.
Jeśli kompilacji programu w wierszu polecenia przy użyciu dowolnej z /RTC opcje kompilatora, wszelkie pragma optimize instrukcje w kodzie po cichu zakończy się niepowodzeniem.Jest tak, ponieważ błąd w czasie wykonywania kontroli nie są prawidłowe w kompilacji release (zoptymalizowana).
Należy korzystać z /RTC dla rozwoju kompilacje; /RTCnie stosuje się dla kompilacji sprzedaży detalicznej./RTCnie można używać z optymalizacje kompilatora (/O opcje (Optymalizacja kodu)).Obraz programu zbudowany z /RTC będzie nieco większy i nieco wolniej niż obraz zbudowany z /Od (maksymalnie 5 procent wolniej niż /Od zbudować).
Dyrektywy preprocesora __MSVC_RUNTIME_CHECKS zostaną zdefiniowane, gdy używana jest dowolna /RTC opcji lub /GZ.
Aby ustawić tę opcję kompilatora w środowisku projektowym programu Visual Studio
Otwórz projekt Stron właściwości okno dialogowe.Aby uzyskać szczegółowe informacje, zobacz Jak: Otwórz strony właściwości projektu.
Kliknij przycisk C i C++ folder.
Kliknij przycisk Generowanie kodu stronę właściwości.
Zmodyfikuj jedną lub obie następujące właściwości: Podstawowe sprawdza Runtime lub Mniejszych Sprawdź typ.
Aby programowo ustawić tę opcję kompilatora
- Zobacz BasicRuntimeChecks i SmallerTypeCheck właściwości.