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

Usado para ativar e desativar o recurso de verificações de erro de tempo de execução, juntamente com o runtime_checks pragma.

/RTC1
/RTCc
/RTCs
/RTCu

Argumentos

  • 1
    Equivalent of /RTCsu.

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

    Esta opção relata situações em que você pretende truncar, por exemplo, se você desejar que os primeiros oito bits de um int retornado como um char.Porque /RTCc causa um erro em tempo de execução se qualquer informação é perdida como resultado de uma atribuição, você pode mascarar desativar as informações necessárias para evitar um erro de tempo de execução como 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
    Permite empilhar quadro Runtime verificação de erros, da seguinte maneira:

    • Inicialização de variáveis locais para um valor diferente de zero.Isso ajuda a identificar bugs que não aparecem quando executado no modo de depuração.Há uma chance maior de variáveis de pilha ainda será zero em uma compilação de depuração em comparação comparada uma versão de compilação por causa das otimizações do compilador de variáveis de pilha em uma versão de compilação.Depois que um programa tiver usado uma área de sua pilha, ele nunca é redefinido como 0 pelo compilador.Portanto, variáveis de pilha subseqüente e não inicializado que acontecem usar a mesma área de pilha podem retornar valores resultados de uso anterior dessa memória de pilha.

    • Detecção de estouros e subutilizações de variáveis locais, tais como matrizes./RTCsnão irá detectar saturações ao acessar a memória que resulta do preenchimento do compilador dentro de uma estrutura.Enchimento poderia ocorrer por meio de Alinhar (C++), /ZP (alinhamento de membro Struct), ou Pack, ou se você ordenar os elementos de estrutura de tal forma exigir o compilador para adicionar preenchimento.

    • Verificação de ponteiro de pilha, que detecta a corrupção do ponteiro de pilha.Corrupção de ponteiro de pilha pode ser causada 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 é exportada como __stdcall , mas você declara o ponteiro para a função cdecl.

  • u
    Relatórios quando uma variável é usada sem ter sido inicializado.Por exemplo, uma instrução que gera C4701 também podem gerar um erro de tempo de execução em /RTCu.Qualquer instrução que gera C4700 de aviso (nível 1 e nível 4) do compilador irá gerar um erro de tempo de execução em /RTCu.

    No entanto, considere o fragmento de código a seguir:

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

    Se uma variável pode ter sido inicializada, ele não será relatado em tempo de execução por /RTCu.Por exemplo, após uma variável com alias através de um ponteiro, o compilador não irá controlar a variável e reportar uso não inicializado.Na verdade, você pode inicializar uma variável, tirando seu endereço.A & operador funciona como um operador de atribuição nessa situação.

Comentários

Verificações de erro em tempo de execução são uma maneira de você 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ê compilar seu programa na linha de comando usando qualquer um do /RTC opções de compilador, qualquer pragma otimizar instruções em seu código falhará silenciosamente.Isso ocorre porque as verificações de erro em tempo de execução não são válidas em uma compilação de lançamento (otimizado).

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

A diretiva de pré-processamento de __MSVC_RUNTIME_CHECKS será definida ao usar qualquer /RTC opção ou /GZ.

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

  1. Abra o projeto Páginas de propriedades caixa de diálogo.Para obter detalhes, consulte:Como: abrir páginas de propriedades do projeto.

  2. Clique no C/C++ pasta.

  3. Clique no Geração de código página de propriedades.

  4. Modificar uma ou ambas as seguintes propriedades: Básica Runtime verifica ou Verificação de tipo menor.

Para definir essa opção de compilador programaticamente

Consulte também

Tarefas

RTC sample

Referência

Opções do compilador

Configurando opções de compilador