Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C\C++] Effettiva differenza tra STRUCT e TYPEDEF

    qual'è l'effettiva differenza tra TYPEDEF e STRUCT?

    nel senso che...se scrivo delle strutture con typedef...e queste le riadatto con STRUCT...eliminando tutti i typedef dalle strutture che uso...che può succedere???

    EDIT:
    mi spiego meglio...cosa cambia per il compilatore? cambia il modo in cui la funzione restituisce i dati e questi vengono messi in memoria o è perfettamente uguale?

  2. #2
    penso che la differenza la veda solo il programmatore.
    esempio:
    codice:
    struct data {
        int giorno;
        int mese;
        int anno;
    };
    
    typedef struct {
        int giorno;
        int mese;
        int anno;
    } data;
    Per il compilatore le due cose sono uguali.
    Ma per te' no...
    Infatti nel primo caso quando vuoi creare una variabile di tipo 'data' devi scrivere struct data varData;
    mentre con il typedef devi scrivere data varData;

    io penso che non ci siano differenze.

  3. #3
    perfetto

    mi serviva saperlo xche sto utilizzando l'estensione FFI di php per far si che PHP possa accedere a librerie esterne come ad esempio le SDL, le wxwindows..solo che nelle dichiarazioni le SDL usano quasi sempre le typedef...avevo il sospetto che fosserò uguali, tanto che dopo che ho sistemato tutti gli header con le struct ritornava i valori e li leggevo correttamente, ma fare un lavoro abb pesante col rischio poi di trovarsi a mare non era la cosa + bella del mondo

    grazie veramente!

  4. #4
    Utente di HTML.it L'avatar di pixer
    Registrato dal
    Oct 2000
    Messaggi
    614
    La differenza tra typedef struct e struct sta nel tipo di linguaggio usato.

    In C, la sintassi
    codice:
    	 struct prova {
    		int a;
    		int b;
    	};
    provocherà errore, mentre in C++ no.

    In entrambi i casi è possibile utilizzare typedef struct.
    codice:
    	typedef struct {
    		int a;
    		int b;
    	} prova;
    tutto qui.
    MySQL Worker - The OpenSource Multiplatform MySQL database Administrator (C++ powered)
    .:[ It resumes the development !! ]:.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.