/RTC (Sprawdzanie błędów czasu wykonywania)
Używane 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
Raportów wówczas, gdy wartość jest przypisany do mniejszego typu danych i powoduje utratę danych.Na przykład, jeśli wartość typu short 0x101 jest przypisana do zmiennej typu char.Ta opcja raporty sytuacje, w których chcesz obciąć, na przykład, jeśli chcesz pierwszych ośmiu bitów int zwracane jako char.Ponieważ /RTCc powoduje błąd w czasie wykonywania jeśli wszelkie informacje zostaną utracone w wyniku przypisania, może maskować off informacje niezbędne do uniknięcia błędu wykonania dzięki /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
Włącza stos ramki wykonywania kontroli błędów, w następujący sposób:Inicjowanie zmiennych lokalnych na wartość różną od zera.To ułatwia identyfikowanie błędów, które nie są wyświetlane podczas uruchamiania w trybie debugowania.Istnieje większe szanse, że zmienne stosu będą nadal zero w porównaniu do wydanej kompilacji z powodu optymalizacje kompilatora zmiennych stosu w wydanej kompilacji kompilacja do debugowania.Po wykorzystaniu przestrzeni jego stosie programu to jest nigdy nie zerowany przez kompilator.W związku z tym stos kolejnych, niezainicjowanych zmiennych, które się do wykorzystania w tym samym obszarze stosu może zwracać wartości pozostały z wcześniejszego używania tej pamięci stosu.
Wykrywanie przepełnień i opóźnieniu lokalnych zmiennych, takich jak tablice./RTCspodczas uzyskiwania dostępu do pamięci, która jest wynikiem dopełnienie kompilatora w ramach struktury nie wykryje przekroczenia.Dopełnienie może wystąpić przy użyciu align (C++), /Zp (Wyrównanie członka struktury), lub pakiet, lub jeśli zamówienie struktury elementy 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.Może być spowodowane uszkodzeniem wskaźnik stosu niezgodność konwencji wywoływania.Na przykład, za pomocą wskaźnika funkcji, wywołanie funkcji 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, która generuje C4701 może również generować błąd w czasie wykonywania pod /RTCu.Żadnych instrukcji, która generuje Ostrzeżenie C4700 kompilatora (poziom 1 i 4) wygeneruje błąd wykonania pod /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 zmiennej jest aliasu za pomocą wskaźnika, kompilator nie śledzić zmiennej i Raport niezainicjowany zastosowań.W efekcie może zainicjować zmienną przez przyjęcie jego adresu.& Operator działa jak operator przypisania w tej sytuacji.
Uwagi
Błąd w czasie wykonywania kontroli są sposobem zlokalizowania błędów w kodzie uruchomiony; Aby uzyskać więcej informacji, zobacz Porady: Korzystanie z macierzystego sprawdzania w trakcie wykonywania.
Jeśli kompilacja programu w wierszu polecenia przy użyciu dowolnej z /RTC opcje kompilatora, wszelkie pragmy optymalizuj instrukcje w kodzie dyskretnie nie powiedzie się.Dlatego błąd w czasie wykonywania kontroli nie są prawidłowe w kompilacji release (zoptymalizowana).
Należy używać /RTC dla rozwoju buduje; /RTC nie powinny być używane dla kompilacji detalicznych./RTCNie można używać z optymalizacje kompilatora (/O Opcje (optymalizuj kod)).Obraz programu zbudowany z /RTC będzie nieco większe i nieco wolniej niż obraz zbudowany z /Od (5 procent wolniejszy niż /Od budować).
Dyrektywy preprocesora __MSVC_RUNTIME_CHECKS zostanie zdefiniowana, gdy używana jest dowolna /RTC opcji lub /GZ.
Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio
Otwórz okno dialogowe Strony właściwości projektu.Szczegółowe informacje – zobacz: Porady: otwieranie stron właściwości projektów.
Kliknij folder C/C++.
Kliknij stronę właściwości Generowanie kodu.
Zmodyfikuj jedno lub oba z następujących właściwości: Podstawowe sprawdza Runtime lub Mniejsze Sprawdź typ.
Aby programowo ustawić tę opcję kompilatora
- Zobacz właściwości BasicRuntimeChecks i SmallerTypeCheck.