Quelqu'un peut-il me dire quand utiliser Typedef en C? Dans le code suivant, je reçois un avertissement par gcc code>: Avertissement: spécificateur de classe de stockage inutile dans la déclaration vide code> p> typedef struct node
{
int data;
struct node* forwardLink;
} ;
6 Réponses :
La syntaxe de Vous voulez probablement P> Typedef code> est Typedef type code>, et aucun nom nom code>, de sorte que votre compilateur se plaint. typedef struct node
{
int data;
struct node* forwardLink;
} node;
Utilisez Dans votre cas, au lieu d'utiliser mais vous manquez l'alias de votre déclaration: p> Ceci accomplit la même chose mais pourrait mieux illuminer la cause de Votre erreur: p> Typedef code> lorsque vous souhaitez utiliser un autre nom pour un type, par exemple. une structure. struct noeud code> pour déclarer une variable, vous pouvez utiliser à la place noeud code>, sous forme de noeud de structure code>. p>
alors ..
Vous pouvez le faire: p> pour définir un objet que vous pouvez utiliser comme Comme ceci: p> Cependant, disons que vous vouliez vous y référer comme juste ou p> puis utilisez-le comme: p> struct noeud code>. P> noeud code>. Ensuite, vous pourriez faire: p>
Est-ce que ce dernier est valide c? Je penserais que vous devriez faire Typedeft Struct node {int Data; Nœud de structure * ForwardLink;} noeud; code> ou somesuch (certains ou même la plupart des dialectes C peuvent permettre la même orthographe pour le nom code> Nom code> Nom et Typedef code> Nom, Mais la plupart des codes que j'ai vus utiliseraient des noms légèrement différents; les dialectes C Je suis familière avec ne pas autoriser un nom défini uniquement en tant que Typedef code> à utiliser comme struct code > nom).
@supercat: Si vous avez vu mes commentaires précédents, ignorez-les. Vous avez complètement raison. J'ai échangé le membre du membre struct * code> à un vide * code>, qui ne serait pas particulièrement utile dans le cas de l'OP, il explique toujours la situation générique.
struct node *p;
Typedef est utilisé pour définir le type de données utilisateur. Par exemple
integer a;// a would be declared as int only
Pour les tenants qui sont une liste de valeurs possibles de certaines variables:
typedef enum {BLACK=0, WHITE, RED, YELLOW, BLUE} TColor;
Supprimé C ++ . C et C ++ sont des langues différentes. "Quand utiliser Typedef en C ++" est une question distincte avec une réponse différente.