Newsgroup: it.comp.lang.c
Titolo: problema puntatori a strutture....HELP!

Ma xchč non mi compila questo? (preso pari pari dal libro!) (credo)
#include <ncurses.h>
#define MAXL 10000
#define MAXC 1000
WINDOW *pad_main;
int max_lines, max_cols;
struct point {
        int x;
        int y;
} ;
struct point pt, *origin;
origin = &pt;
.........
........
Mi dice:
editor.c:15: conflicting types for `origin'
editor.c:14: previous declaration of `origin'
editor.c:15: warning: initialization makes integer from pointer without a 
cast
editor.c:15: warning: data definition has no type or storage class
Non capisco.....
Grazie!
Pelux

 
Forse mi sbaglio,ma penso che il compilatore ti stia segnalando che 
esiste gia' una precedente dichiarazione di origin di un diverso tipo, 
pero' non e' detto che origin sia stata dichiarata in qualche altro 
punto di editor.c ma bensi che potrebbe essere presente in qualche 
header file incluso dal tuo programma....!!!
Prova a cambiare nome a origin es.origine e fammi sapere!!!
bye bye
Luciano

lucpie wrote:

No, assolutamente... non ho includo nulla e anche se faccio solo quello piu 
un main vuoto non salta fuori nulla di buono.
Non capisco..... devo includere qualche header particolare x usare gli 
struct? non so che pensare!
Pelux

 origin = &pt;
Sposta "origin=&pt;" dentro main
Dan


Vi allego un secondo tentativo.... se uso:
#include <stdio.h>
struct point {
                int x;
                int y;
        } ;
struct point pt, *abc;
abc = &pt;
int main()
{
 
        int c;
 
        c = getchar();
        return(0);
}
non funziona e dice:
test.c:7: conflicting types for `abc'
test.c:6: previous declaration of `abc'
test.c:7: warning: initialization makes integer from pointer without a cast
test.c:7: warning: data definition has no type or storage class
se invece faccio
#include <stdio.h>
int main()
{
        struct point {
                int x;
                int y;
        } ;
        int c;
        struct point pt, *abc;
        abc = &pt;
        c = getchar();
        return(0);
}
(in pratico sposto tutto in main) funziona senza problemi.
Ma xchè? Linguaggio C 2 ed non mi pare che faccia nessun accenno a tutto 
questo.... inoltre usa anche cose come (v pagina 169 libro italaino)
struct point pt, *ppt = pt;
che mi danno errore, ovvero:
test.c: In function `main':
test.c:10: incompatible types in initialization
Contino a non capire...
Pelux sempre + basito :o

 
Ho risolto !!!
Prova cosi'
strcut point pt,*origin=&pt;
e tutto andra' bene!!!!
Pero' non so' dirti per quale motivo ...!!!
Ripassero' un po di regole riguardante le variabili globali!!!!
byr byr
Luciano

 origin = &pt;
Questa istruzione deve stare all'interno di una funzione.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
La vispa candela bruciava l'erbetta
creando un'essenza alquanto sospetta;
sembrava l'odore di una sacrestia
ma presto mi accorsi che era maria.

 Questa istruzione deve stare all'interno di una funzione.
 
Se cio' che dici e' vero allora perche' l'istruzione nello scope globale
#include <ncurses.h>
.
.
.
struct point pt,*origin=&pt;
main () {
}
Non da nessun errore o warning????
Compilatore gcc version 2.95.3 20010315 (SuSE)
bye bye Luciano

 struct point pt,*origin=&pt;
Questa e` una dichiarazione. Le istruzioni non possono essere presenti a
file  scope. Pensaci bene:  come  potrebbe  il compilatore  determinarne
l'ordine  di  esecuzione? Prima  del   main? Dopo? Tra  una  funzione  e
l'altra?
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Non ho ancora capito se il mio cane e` maschio o femmina:
quando fa la pipi` si chiude in bagno