Возможно сравнение указателей и целых чисел в C - PullRequest
0 голосов
/ 17 июня 2010

Привет, у меня проблема с этим кодом.Когда я использую эту функцию, у меня нет предупреждений.:

    void handler(int sig){
   switch(sig) {
     case SIGINT : { click++; fprintf(stdout,"SIGINT recu\n");
                           if( click == N){
                             exit(0);
                           }
   }
     case SIGALRM : fprintf(stdout,"SIGALRM received\n");
                    exit(0);
     case SIGTERM:  fprintf(stdout,"SIGTERM received\n");
                     exit(0);


  }
  }

Но когда я переписываю функцию с этой новой версией, у меня появляется предупреждение " между указателем и целым числом " в операторе if:

void handler( int sig){
   printf("Signal recu\n");
    if( signal == SIGINT){
     click++;
     fprintf(stdout,"SIGINT received; Click = %d\n",click);
     if(click == N){
      fprintf(stdout,"Exiting with SIGINT\n");
       exit(0);
     }
   } else if(signal == SIGALRM){
      fprintf(stdout,"SIGALRM received\n"); 
      exit(0);
   } else if(signal == SIGTERM){
     fprintf(stdout,"SIGTERM received\n"); 
     exit(0);
   }

Может кто-нибудь сказать мне, где находится проба?

Ответы [ 3 ]

10 голосов
/ 17 июня 2010

Во втором коде вы сравниваете signal, который даже не является локальной переменной в коде. Фактически, signal, как вы его использовали, вероятно, относится к функции signal .

Напротив, в первом коде вы switch используете sig, который является int параметром для функции.

4 голосов
/ 17 июня 2010

Во втором блоке вы сравниваете с signal, а не sig.Поскольку signal не объявлен локально, вы фактически сравниваете его с указателем на функцию signal().

1 голос
/ 17 июня 2010

Во второй версии вы сравниваете сигнал, который не определен в вашей функции, с SIGINT и т. Д. Сигнал объявляется в другом месте как указатель.

Возможно, вы хотели переименовать sig в ​​прототипе функции для подачи сигнала

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