Код деактивирован постоянным ложным условием

Сегмент кода деактивирован директивой #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