предупреждение: неиспользуемая переменная - PullRequest
1 голос
/ 17 августа 2011

см. В одном коде, который я написал

void my_function()
{
INT32 i;    /* Variable for iteration */ 
/* If system is little-endian, store bytes in array as reverse order */
#ifdef LITTLE   
   {    
    // i m using i for operating one loop 
   }
   #endif

 /* If the system is big-endian, store bytes in array as forward order */
#ifdef  BIG 
   {
   // using i for loop
   }
   #endif
return;
 }

, скомпилировав этот код с флагом -Wall, который показывает

 warning: unused variable ‘i’      

почему?как я могу удалить это?

Ответы [ 5 ]

4 голосов
/ 17 августа 2011

Поместите объявление i прямо внутри {}, где вы его фактически используете. Еще лучше, если у вас есть C99, объявите переменную цикла внутри for(int i = 0, i < bound; ++i)

1 голос
/ 22 августа 2011

Вам нужно определить либо БОЛЬШОЙ, либо МАЛЕНЬКИЙ (как уже упоминалось в другом месте).

Чтобы не допустить повторения этого в будущем, вы можете вызвать конкретную ошибку во время компиляции, используя следующее:

#if !defined LITTLE && !defined BIG
#error You haven't defined one of your macro names
#endif

В качестве альтернативы, вы можете включить i только при использовании любого блока кода, также окружив его #if defined:

#if defined LITTLE || defined BIG
INT32 i;
#endif

В обоих случаях обратите внимание на ключевое слово для использования #if не #ifdef или #ifndef.

1 голос
/ 17 августа 2011

Определяя либо LITTLE, либо BIG. Я сомневаюсь, что многие компиляторы выдают это предупреждение для этого кода, когда один из этих символов определен. Если у вас все еще есть предупреждение, вы можете изменить второй #ifdef на #else.

Я нигде не вижу #endif - предположительно в реальном коде они появляются.

0 голосов
/ 18 августа 2011

эй, я получил ответ ...

см. БОЛЬШОЙ & МАЛЕНЬКИЙ флаги предоставителя, и они выдаются во время компиляции.когда я компилировал свой проект с помощью make-файла, я давал этот флаг во время компиляции, но при тестировании каждого отдельного файла я компилировал, как

gcc -Wall -c filename.c 

Это происходило, потому что я не дал никакого флага, поэтому компилятор собирается игнорироватьбольшая часть кода и я получаю предупреждение.

gcc -Wall -c -LITTLE filename.c 

отлично работает ...

0 голосов
/ 17 августа 2011

Вам не нужно объявлять номер итерации. Просто сделайте это в своем заявлении.

for(int i = 0; i < 6; i++){
  // insert loop code here

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...