/ RTC (Chyba při spuštění kontroly)
Povolit a zakázat funkci Chyba spuštění kontroly ve spojení s runtime_checks pragma.
/RTC1
/RTCc
/RTCs
/RTCu
Arguments
1
Equivalent of /RTCsu.c
Menší typ dat a ztráta dat je přiřazena sestavy při hodnotu.Například pokud je hodnota typu short 0x101 je přiřazena proměnné typu char.Tato možnost sestavy situací, ve kterých chcete zkrátit, pokud chcete, aby prvních osm bitů int vrácena jako char.Protože /RTCc způsobí chybu běhu dojde ke ztrátě tohoto přiřazení veškeré informace se můžete maskovat vypnutí informace je třeba vyhnout se chybě běhu v důsledku /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 skládat rámečku spuštění kontroly chyb, takto:Inicializace místní proměnné nenulovou hodnotu.To pomáhá identifikovat chyby, které nejsou uvedeny v režimu ladění.Je větší šanci, že zásobníku proměnné bude nula v ladění sestavení oproti verzi sestavení z důvodu optimalizace kompilátor zásobníku proměnných ve verzi sestavení.Jakmile program použil oblast jeho zásobníku, ji nikdy nastaven na hodnotu 0 kompilátorem.Proto zásobníku následné, neinicializované proměnné, které stát použít stejné oblasti zásobníku 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 místní proměnné jako pole./RTCsPři přístupu k paměti, která je výsledkem kompilátor odsazení v rámci struktury nezjistí překročení.Odsazení může nastat pomocí zarovnání (C++), /ZP (Struct členské zarovnání), nebo pack, nebo pokud pořadí elementů struktury způsobem vyžaduje kompilátor přidat výplň.
Ověřování ukazatel zásobníku, které zjistí poškození ukazatel zásobníku.Poškození zásobníku ukazatel může být způsobeno neshodou volající úmluvy.Například pomocí funkce ukazatel volání funkce v knihovně DLL, který se exportuje jako __stdcall , ale deklarovat ukazatel funkce jako __cdecl.
u
Sestavy použijete proměnnou bez s nebyla inicializována.Například instrukce, která generuje C4701 může také generovat chybu běhu pod /RTCu.Všechny instrukce, která generuje C4700 kompilátoru upozornění (úroveň 1 a 4) bude generovat chybu běhu pod /RTCu.Zvažte však následující fragment kódu:
int a, *b, c; if ( 1 ) b = &a; c = a; // No run-time error with /RTCu
Pokud by nebyla inicializována proměnná, to není ohlášena za běhu pomocí /RTCu.Například po aliasu prostřednictvím ukazatele je proměnná, kompilátor není sledování proměnné a vykazování neinicializované používá.Ve skutečnosti můžete inicializovat proměnné pomocí jeho adresy.& operátor pracuje stejně jako operátor přiřazení v této situaci.
Poznámky
Chyba při spuštění kontroly jsou způsob vyhledání problémy v kódu spuštění; Další informace naleznete v Jak: použití nativního spuštění kontroly.
Pokud kompilace na příkazovém řádku pomocí programu /RTC volby kompilátoru, jakékoli pragma optimize pokyny v kódu nezdaří bez upozornění.Důvodem je chyba spuštění kontroly nejsou platné v sestavení uvolnění (optimalizace).
Měli byste použít /RTC pro sestavení rozvoje; /RTCse nedoporučují pro prodejní sestavení./RTCnelze použít s optimalizací kompilátoru (/O možnosti (Optimalizace kódu)).Bitové kopie programu integrována s /RTC bude poněkud větší a poněkud pomalejší než obraz s /Od (až 5 procent nižší než /Od sestavit).
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 Jak: otevření stránky vlastností projektu.
Klepněte C/C++ složky.
Klepněte Generování kódu stránky vlastností.
Změnit jednu nebo obě následující vlastnosti: Základní kontroly Runtime nebo Menší kontrolu typu.
Programově nastavit tuto volbu kompilátoru
- Viz BasicRuntimeChecks a SmallerTypeCheck vlastnosti.