Udostępnij za pośrednictwem


/ 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

  1. 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.

  2. Kliknij przycisk C i C++ folder.

  3. Kliknij przycisk Generowanie kodu stronę właściwości.

  4. 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 też

Zadania

RTC sample

Informacje

Opcje kompilatora

Ustawianie opcji kompilatora