Share via


/RTC (verificações de erro de tempo de execução)

Usado para habilitar e desabilitar o recurso das verificações de erro em tempo de execução, junto com o pragma de runtime_checks .

/RTC1
/RTCc
/RTCs
/RTCu

Arguments

  • 1
    Equivalente de /RTCsu.

  • c
    Informa quando um valor é atribuído a um tipo de dados menor e os resultados em uma perda de dados. Por exemplo, se um valor do tipo short 0x101 é atribuído a uma variável de tipo char.

    Essa opção relata as situações em que você pretende truncar, por exemplo, se você quiser os primeiros oito bit de int retornado como char. Como /RTCc causa um erro em tempo de execução se algumas informações são perdidas no resultado de atribuição, você pode mascarar fora de informações que você precisa evitar um erro em tempo de execução no resultado de /RTCc. Por exemplo:

    #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
    Habilita o erro em tempo de execução do quadro de pilhas que verifica, como segue:

    • Inicialização de variáveis locais como um valor diferente de zero. Isso ajuda a identificar os bug que não aparecem ao executar em modo de depuração. Há uma possibilidade maior que empilha variáveis ainda será zero em uma compilação de depuração comparada com uma versão de compilação devido às otimizações de compilador de variáveis da pilha em uma compilação da versão. Quando um programa usou uma área da pilha, ele nunca é redefinido como 0 pelo compilador. Em virtude disso, as variáveis subsequentes, não inicializada da pilha que acontecem usar a mesma área de pilhas podem retornar valores deixados sobre o uso anterior desta memória de pilha.

    • Detecção de excedentes e underruns de variáveis locais como matrizes. /RTCs não detectará sobre ao acessar a memória que resulta de preenchimento do compilador em uma estrutura. O preenchimento pode ocorrer usando align (C++), /Zp (alinhamento de membro do Struct), ou pack, ou se você ordena os elementos da estrutura de modo que exija o compilador adicionar o preenchimento.

    • Verificação do ponteiro da pilha, que detecta danos do ponteiro de pilha. Dano do ponteiro de pilhas pode ser causado por uma incompatibilidade de convenção de chamada. Por exemplo, usando um ponteiro de função, você chama uma função em uma DLL que foi exportado como __stdcall mas você declara o ponteiro da função como __cdecl.

  • u
    Informa quando uma variável for usada sem ter sido inicializado. Por exemplo, uma instrução que gerencia C4701 também pode gerar um erro em tempo de execução em /RTCu. Qualquer instrução que gerencie Aviso C4700 (compilador) (nível 1 e nível 4) gerará um erro em tempo de execução em /RTCu.

    No entanto, considere o seguinte fragmento de código:

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

    Se uma variável pode ter sido inicializado, não será relatado em tempo de execução por /RTCu. Por exemplo, depois de uma variável alias por meio de um ponteiro, o compilador não controlará a variável e não relatará usa não inicializada. Em vigor, você pode inicializar uma variável com seu endereço. & O trabalho do operador como um operador de atribuição nessa situação.

Comentários

As verificações de erro em tempo de execução são um modo para encontrar problemas em seu código em execução; para obter mais informações, consulte Como usar verificações de tempo de execução nativas.

Se você criar seu programa na linha de comando usando qualquer uma das opções do compilador de /RTC , todas as instruções de otimize de pragma em seu código em modo silencioso falharão. Isso é porque as verificações de erro em tempo de execução não são válidos em uma compilação de versão (otimizada).

Você deve usar /RTC para compilações de desenvolvimento; /RTC não deve ser usado para uma construção de varejo. /RTC não pode ser usado com otimizações de compilador (/O opções (otimizar código)). Uma imagem de programa criada com /RTC será ligeiramente maior e um pouco mais lenta do que uma imagem criada com /Od (até 5 por cento mais lenta do que uma construção de /Od ).

A política de pré-processador de __MSVC_RUNTIME_CHECKS será definida quando você usa qualquer opção ou /GZde /RTC .

Para definir esta opção do compilador no ambiente de desenvolvimento do Visual Studio

  1. Abra a caixa de diálogo Páginas de Propriedade do projeto. Para obter detalhes, consulte Como abrir páginas de propriedade do projeto.

  2. Clique na pasta C/C++.

  3. Clique na página de propriedades de Geração de Código .

  4. Modifique uma ou mais das seguintes propriedades: Verificações Básicas de Tempo de Execução ou Verificação de Tipo Menor.

Para definir essa opção do compilador via programação

Consulte também

Referência

Opções do compilador

Definindo opções do compilador

Outros recursos

RTC sample