Avertissement du compilateur (niveau 1) C4047

'opérateur' : les niveaux d'indirection de 'identificateur1' et de 'identificateur2' sont différents

Un pointeur peut pointer vers une variable (un niveau d’indirection), vers un autre pointeur qui pointe vers une variable (deux niveaux d’indirection), et ainsi de suite.

Exemples

L’exemple suivant génère l’erreur C4047 :

// C4047.c
// compile with: /W1

int main() {
   char **p = 0;   // two levels of indirection
   char *q = 0;   // one level of indirection

   char *p2 = 0;   // one level of indirection
   char *q2 = 0;   // one level of indirection

   p = q;   // C4047
   p2 = q2;
}

L’exemple suivant génère l’erreur C4047 :

// C4047b.c
// compile with: /W1
#include <stdio.h>

int main() {
   int i;
   FILE *myFile = NULL;
   errno_t  err = 0;
   char file_name[256];
   char *cs = 0;

   err = fopen_s(&myFile, "C4047.txt", "r");
   if ((err != 0) || (myFile)) {
      printf_s("fopen_s failed!\n");
      exit(-1);
    }
   i = fgets(file_name, 256, myFile);   // C4047
   cs = fgets(file_name, 256, myFile);   // OK
}