Undefined identifier mimo deklaracji

0

Witam,

Co jakiś czas pojawia mi się w programach komunikat podobny do tego:

1>sciezka\index.c(36): error C2065: 'ptr' : undeclared identifier

I kompilator zgłasza kilka właściwie identycznych. Sam kod wygląda tak:

char *n; // name
	n = (char *)malloc(sizeof(char)*(strlen(name)+1));
	struct human *ptr;
	ptr = (struct human *)malloc(sizeof(struct human));

Co robię nie tak? To może coś z alokacją pamięci po drodze psuje tworzenie wskaźnika do struktury?

0

Twój kod nie jest zgodny ze standardem C - to wszystko.

Kod podobny do Twojego (błędny):

#include <stdio.h>
#include <stdlib.h>

int main(void) {
int a;
a = 10;
char *b;
b = (char*) malloc (200 * sizeof(char)); 
int c;
c = 100;

return 0;    
}

Kod zgodny ze standardem:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
int a;
char *b;
int c;

a = 10;
b = (char*) malloc (200 * sizeof(char)); 
c = 100;

return 0;    
}

Standard C narzuca wymóg deklaracji zmiennych na samym początku! Przy czym dozwolona jest inicjalizacja deklarowanych zmiennych:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
int a = 10;
char *b = (char*) malloc (200 * sizeof(char)); 
int c = 100

return 0;    
}
0

Bardzo dziękuję :) Wiedziałem, że trzeba zadeklarować zmienną przed jej użyciem, ale zapomniałem o tym, że wszystkie deklaracje mają być na początku programu/funkcji.

EDIT: Dopiero teraz zauważyłem uwagę kolegi. Rzeczywiście korzystam z Visuala, który jak widać nie wspiera tego standardu :) Dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1