Compilerwarnung (Stufe 1) C4047
'Operator': 'Bezeichner1' unterscheidet sich in Ebenen der Dereferenzierung von 'Bezeichner2'
Ein Zeiger kann auf eine Variable (eine Dereferenzierungsebene), auf einen anderen Zeiger, der auf eine Variable zeigt (zwei Dereferenzierungsebenen), zeigen usw.
Beispiel
Im folgenden Beispiel wird C4047 generiert:
// 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;
}
Im folgenden Beispiel wird C4047 generiert:
// 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
}