Quelle est la différence entre: et p> J'utilise la première approche, mais j'ai vu le second sur un répondre. Je veux juste définir le type et définir la variable avec ce type séparément. p> p>
3 Réponses :
La deuxième approche vous permet de renvoyer le type de structure. Donc, si nous traitons avec des en-têtes, vous pouvez éviter une inclusion transitive inutile. Par exemple, considérez ce petit en-tête: qui supprime la dépendance sur Lorsque vous utilisez la première approche , vous créez un alias à un type de structure sans balise, vous ne pouvez donc pas em> l'avant de le déclarer. Et le code client est forcé em> d'inclure votre définition de type pour avoir accès à son nom. P> p> list_t code> S de la définition complète de tous les clients du client. Code qui doit utiliser uniquement la barre code> n'est pas obligé d'inclure la définition de
list_t_t code> (par inclusion transitive). P>
La différence est utile pour les structures de données auto-référençant. Notez que le nom après struct code> n'est pas nécessairement identique à celui utilisé pour
Typedef code>. p> p>
merci +1 mais .. est struct code> est nécessaire dans
struct exemple2 * PTR; code>?
@snr OUI parce que, à ce stade de l'analyse ( PTR code> membre) par le compilateur, le type
struct exemple2 code> est connu (partiellement, comme déclaration avant) mais pas le Tapez
Exemple2 code> (Typedef); Ce dernier sera connu au dernier point-virgule.
Il semble s'agir d'une matière de goût et de style de codification préféré, mais la deuxième manière (comme mentionné dans d'autres réponses) est utile pour les structures d'auto-références (par exemple la liste ou les structures de données d'arbres) et la déclaration à terme. Quant à moi, je préfère la deuxième manière en C et pense que c'est beaucoup plus commun.
Référence p>
in c: p> Dans ce cas, il y a deux options: le premier est d'omettre les deux ou vous pouvez utiliser un dans les deux cas, si vous le souhaitez Déclarez un pointeur à une structure à l'intérieur de la structure, vous devez utiliser la première syntaxe, avec le mot-clé STRIT: P> TYPEDEF CODE> et
STRUT_NAME_T CODE>, auquel cas pour déclarer une structure, vous devez inclure réellement le mot clé code> struct p>
typedef code> pour déclarer un type Struct_Name_T que vous pouvez utiliser: p>
struct struct_name *struct_instance;
NB: Les identifiants de POSIX se terminent par
_t code>.
@Alnitak qu'est-ce que cela signifie?
Cela signifie que si vous développez du code pour compiler sur une plate-forme compatible POSIX, vous devez utiliser ce suffixe pour vos propres noms de type.
Oups, je voulais dire "devrait pas i>"!
Je pensais littéralement que "pourquoi a-t-il mentionné que si je peux déjà l'utiliser pour mes propres noms de type" lol :) maintenant je l'obtient. Merci!