/RTC (kontrola chyb za běhu)

Umožňuje povolit a zakázat funkci kontroly chyb běhu ve spojení s runtime_checks pragma.

/RTC1
/RTCc
/RTCs
/RTCu

Arguments

  • 1
    Equivalent of /RTCsu.

  • c
    Zprávy, když je hodnota přiřazena typu menší a má za následek ztrátu dat.Například, pokud je hodnota typu short 0x101 je přiřazen proměnné typu char.

    Tato možnost sestavy situací, ve kterých máte v úmyslu zkrátit, například pokud chcete, aby prvních osm bitů int vrácena jako char.Vzhledem k tomu, /RTCc způsobí chybu běhu po přiřazení ke ztrátě jakýchkoli informací můžete maskovat mimo informace je třeba vyhnout se chybě běhu s /RTCc.Příklad:

    #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
    Umožňuje zásobníku rámce spuštění kontroly chyb, takto:

    • Inicializace místní proměnné nenulovou hodnotu.To pomáhá identifikovat chyby, které se nezobrazí při spuštění v režimu ladění.Je větší šance, že proměnné zásobníku bude nula v porovnání s verzi sestavení z důvodu optimalizace kompilátoru zásobníku proměnných ve vydané verzi sestavení ladění.Jakmile program použil svůj zásobník na oblast, se nikdy nastaven na hodnotu 0 kompilátorem.Proto zásobníku následné, neinicializované proměnné, které se stane s pomocí stejné oblasti zásobníku lze vrátit hodnoty ponechány z předchozího použití tohoto zásobníku paměti.

    • Zjištění překročení a underruns lokálních proměnných, jako je například pole./RTCsPři přístupu k paměti, která je výsledkem kompilátoru odsazení obsahu struktury, nezjistí překročení.Čalounění může nastat při použití align (C++), /Zp (zarovnání členů struktury), nebo pack, nebo pokud objednáte prvky struktury takovým způsobem, že to vyžaduje kompilátor přidat odsazení.

    • Ověření ukazatel zásobníku, který zjistí poškození ukazatel zásobníku.Ukazatel poškození zásobníku může být způsobeno neshodou volající úmluvy.Například pomocí ukazatele na funkci, volání funkce v knihovně DLL, která je exportována jako __stdcall , ale deklarace ukazatele na funkci jako __cdecl.

  • u
    Zprávy při použití bez nutnosti inicializována proměnná.Například příkaz, který generuje C4701 může také generovat chybu běhu pod /RTCu.Všechny instrukce, která generuje Upozornění kompilátoru (úroveň 1 a 4) C4700 bude generovat chybu běhu pod /RTCu.

    Nicméně zvažte následující fragment kódu:

    int a, *b, c;
    if ( 1 )
    b = &a;
    c = a;  // No run-time error with /RTCu
    

    Pokud by byly inicializovány proměnné, nebudou hlášeny za běhu pomocí /RTCu.Například po proměnné je alias prostřednictvím ukazatele, kompilátor nebude sledovat proměnné a sestavy použití neinicializované.Ve skutečnosti můžete inicializovat proměnnou pomocí jeho adresy.& Operátor pracuje jako operátor přiřazení v této situaci.

Poznámky

Chyba při spuštění kontroly představují způsob, jak najít problémy ve vašem spuštění kódu; Další informace naleznete v tématu Postupy: Použití nativních kontrol za běhu.

Pokud je váš program na příkazovém řádku pomocí žádného z /RTC možnosti kompilátoru, žádné pragma optimize pokyny v kódu se nezdaří bez upozornění.Je to proto, že chyba spuštění kontroly nejsou platné v sestavení vydání (optimalizované).

Měli byste použít /RTC pro rozvoj sestavení; /RTC neměl by sloužit k maloobchodní sestavení./RTCnelze použít s optimalizace kompilátoru (/O možnosti (optimalizace kódu)).Bitovou kopii programu vytvořené pomocí /RTC bude poněkud větší a mírně pomalejší než bitové kopie vytvořené pomocí /Od (až 5 procent pomalejší než /Od sestavení).

Direktiva preprocesoru __MSVC_RUNTIME_CHECKS bude definován, když používáte jakoukoli /RTC možnost nebo /GZ.

Chcete-li nastavit tuto možnost kompilátoru ve vývojovém prostředí Visual Studio

  1. Otevřete dialogové okno projektu Stránky vlastností.Další informace naleznete v tématu Postupy: Otevření stránek vlastností projektu.

  2. Klikněte na složku C/C++.

  3. Klikněte na stránku vlastností Generování kódu.

  4. Změňte jednu nebo obě z následujících vlastností: Basic Runtime Checks nebo Menší kontrolu typu.

Chcete-li tuto možnost kompilátoru nastavit v programu

Viz také

Referenční dokumentace

Možnosti kompilátoru

Nastavení možností kompilátoru

Další zdroje

RTC sample