Dans certains codes, j'ai vu récemment une structure définie comme ceci: la manière dont je comprends cela, à un autre endroit, ceci a été utilisé comme ceci: p> et il a compilé Fine avec Visual Studio 2010. Comment est-ce valide C ++? Je pensais tagmystruct code> est le nouveau type de données et
Muntruct code> est une variable créée ici. P>
muntruct code> était une variable et non un type? P> p>
3 Réponses :
Vous vous trompez, vous utilisez Pour créer une variable, déposez le TypeDEF: P> typedef code>, i.e.
muntruct code> est un alias pour
tagmystruct code>. Cela explique comment il est correct C ++.
struct tagMyStruct {
int numberOne;
int numberTwo;
} MYSTRUCT;
Ce sont des alias muntruct code> et
TagMystruct code> uniquement en C ++ pas en C
non. pour éviter d'écrire la structure tout le temps, TagMystruct code> est le nom de la structure. Dans C, contrairement à C ++, vous devez utiliser explicitement le mot clé STR de struct chaque fois que vous utilisez le type de structure. Par exemple
struct tagmystruct code> est
typedef code> 'd to
muntructeur code> . Maintenant, vous pouvez écrire P>
MYSTRUCT* pStruct = new MYSTRUCT; //valid C++ (invalid C - use malloc instead of new in C)
@ Bastibechtold: Ce n'est pas une ampersand. C'est un astérisque. Ampersand est & :)
Depuis quand est "nouveau" valable en C? En outre, il convient de souligner que cette utilisation de Typedef code> est inutile et généralement une mauvaise idée en C ++, exactement parce que C ++ ne nécessite pas d'utiliser le mot clé code> struct code> dans le cadre de la Tapez le nom de la manière que ctive. (Bien que parfois vous êtes coincé avec elle parce que vous êtes inter-opérant avec le code C Hériacy.)
typedef tagMyStruct struct { ... } MYSTRUCT;