/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
Otevřete dialogové okno projektu Stránky vlastností.Další informace naleznete v tématu Postupy: Otevření stránek vlastností projektu.
Klikněte na složku C/C++.
Klikněte na stránku vlastností Generování kódu.
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 vlastnosti BasicRuntimeChecks a SmallerTypeCheck.
Viz také
Referenční dokumentace
Nastavení možností kompilátoru