Code deactivated by constant false condition

Сегмент кода деактивирован #if 0 директива или if(0) условие

Описание

Этот дефект происходит, когда блок кода деактивирован с помощью #if 0 директива или if(0) условие.

Риск

#if 0 директива или if(0) условие используется, чтобы временно деактивировать сегменты кода. Если ваш производственный код содержит эти директивы, это означает, что деактивация не была снята прежде, чем поставить код.

Фиксация

Если сегмент кода присутствует для отладки целей только, удалите сегмент из производственного кода. Если деактивация произошла случайно, удалите #if 0 и #endif операторы.

Часто, сегмент кода деактивирован для особых условий, например, определенной операционной системы. Используйте макросы с #if директива, чтобы указать на эти условия вместо того, чтобы деактивировать код полностью с #if 0 директива. Например, GCC обеспечивает макросы, чтобы обнаружить операционную систему Windows®:

#ifdef _WIN32
   //Code deactivated for all operating systems
   //Other than 32-bit Windows
#endif

Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.

Примеры

развернуть все

#include<stdio.h>
int Trim_Value(int* Arr,int Size,int Cutoff) 
{
    int Count=0;

    for(int i=0;i < Size;i++){
        if(Arr[i]>Cutoff){
            Arr[i]=Cutoff;
            Count++;
        }
    }

    #if 0
    /* Defect: Code Segment Deactivated */

    if(Count==0){
        printf("Values less than cutoff.");
    }
     #endif

    return Count;
}

В предыдущем коде, printf оператор помещается в #if #endif директива. Программное обеспечение обрабатывает фрагмент в рамках директивы как комментарии к коду и не скомпилированное.

Коррекция — изменяет #if 0 к #if 1

Если вы не намеревались деактивировать printf оператор, одна возможная коррекция должна повторно активировать блок кода в #if #endif директива. Чтобы повторно активировать блок, измените #if 0 к #if 1.

#include<stdio.h>
int Trim_Value(int* Arr,int Size,int Cutoff) 
{
 int Count=0;

 for(int i=0;i < Size;i++)
     {
      if(Arr[i]>Cutoff)
            {
             Arr[i]=Cutoff;
             Count++;
            }
     }


 /* Fix: Replace #if 0 by #if 1 */	  
 #if 1  
      if(Count==0)
           {
            printf("Values less than cutoff.");
           }
 #endif

 return Count;
}

Информация о результате

Группа: Поток данных
Язык: C | C++
Значение по умолчанию: off
Синтаксис командной строки: DEACTIVATED_CODE
Удар: низко
Введенный в R2013b