Compilerwarnung (Ebene 1) C4047
„Operator“: „Bezeichner1“ unterscheidet sich in Ebenen der Dereferenzierung von „Bezeichner2“.
Ein Zeiger kann auf eine Variable (eine Ebene der Dereferenzierung), auf einen anderen Zeiger zeigen, der auf eine Variable (zwei Dereferenzierungsebenen) verweist usw.
Beispiele
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
}