Dziwny błąd [C] lista wskaźników

0

Witam, pod windowsem mi sie wszystko ladnie kompiluje a po linuxem dostaje takie bledy:
c8 error: expected ':', ',', ';', '}' or 'atribute' before '*' token
c12 error: expected '=', ',', ';' or 'atribute' before 'empty_it'

#include <cstdlib>
#include <iostream>
#include <math.h>

//dzieki typedef dalej bedziemy nazywac ja: list
typedef struct lista{
   float val;
   lista *next;
}list;


bool empty_it(list* stos){
//PRE:  stos na bazie struktury lista
//POST: true gdy lista pusta, false gdy ma elementy
   if(stos==NULL) return true;
   else return false;
} 
0

C czy C++? Bo w nagłówkach widzę iostream i cstdlib, a w C nie ma iostream, a zamiast cstdlib piszemy stdlib.h
No i jeszcze typ bool, którego w C również nie ma.

U mnie na C++ (g++ 4.4) nie ma problemów, a przy C (gcc i plik z rozszerzeniem .c!) błąd:
error: expected specifier-qualifier-list before ‘lista’

pamiętaj że przy gcc rozszerzenie ma znaczenie. Jeżeli ma cpp, uruchamia kompilator C++, ale bez jego bibliotek.

BTW. co to za kompilator C na windzie, który przepuścił takie coś?

//EDIT:

typedef struct lista{
   float val;
   struct lista *next;
}lista;

char empty_it(lista* stos){
//PRE:  stos na bazie struktury lista
//POST: true gdy lista pusta, false gdy ma elementy
   if(stos==NULL) return 1;
   else return 0;
} 

To już się w C kompiluje. Musisz zadeklarować, że *next jest wskaźnikiem na strukturę (bo wcześniej ta struktura nie była zadeklarowana przez typedef, tylko jesteś w jej trakcie). Nie wiem jak dokładnie te typedef w C funkcjonuje ze strukturami, ale ten kod działa:

	list *a=malloc(sizeof(list));
	a->val=2;
	a->next=malloc(sizeof(list));
	a->next->val=4;
	printf("%f", a->next->val);
0

Dzieki, pomoglo. Mi na Windzie przepuścił Dev-Cpp.
Wiec podsumowujac bledy to:
a) brak typu bool w gcc
b) musialo pojawic sie slowko struct przed lista gdyz typedef definiowal to w trakcie i kompilator nie "zczaił" jeszcze tego.

0

a) brak typu bool w gcc

typ bool jak najbardziej jest, tylko w języku C wymaga użycia #include <stdbool.h>

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