Dans un code, j'ai vu récemment il y avait une structure définie comme ceci:Balise de structure et nom, pourquoi une variable locale déclarée comme nom compile?
typedef struct tagMyStruct {
int numberOne;
int numberTwo;
} MYSTRUCT;
La façon dont je comprends, tagMyStruct
est le nouveau type de données et MYSTRUCT
est une variable qui est créé là.
A un autre endroit, cela a été utilisé comme ceci:
MYSTRUCT *pStruct = new MYSTRUCT;
et compilé fin avec Visual Studio 2010. Comment est-ce valide C++? Je pensais que MYSTRUCT
était une variable et non un type?
Oups, vous avez raison. J'ai raté cette esperluette là-bas. – bastibe
@BastiBechtold: Ce n'est pas une esperluette. C'est un astérisque. Ampersand est & :) –
Depuis quand 'new' est-il valide en C? Aussi, il est important de souligner que cette utilisation de 'typedef' est inutile et généralement une mauvaise idée en C++, car C++ ne nécessite pas d'utiliser le mot-clé' struct' comme partie du nom du type comme le fait C. (Bien que vous soyez parfois bloqué avec cela parce que vous interagissez avec le code C hérité.) –