La variable de membre d'un static struct en C
J'ai une question sur les variables de membre static struct en C langue.
Quelqu'un a dit que nous pouvons déclarer une static struct
, mais en C, struct n'ont pas de membres statiques comme la classe en C++, qu'est-ce que cela signifie? Si je déclare une struct statique, quel est le statut des membres de la variable? peut quelqu'un m'aider sur ce point?
- faire un type qui pourrait être potentiellement plusieurs instances, mais dont l'un est toujours la même variable n'a tout simplement aucun sens.
- Surtout quand l'une des conditions est que toutes les données doivent être emballés et en ordre, en mémoire contiguë...
- En fait, qui fait beaucoup de sens, et c'est la façon dont il est utilisé tous les jours en C++. Mutex, singleton modèles, partagé des variables constantes... il y a beaucoup d'utilisations. Cependant, la C n'a pas adopté cette utilisation de la statique à partir de C++, de sorte qu'il n'est pas pertinent à cette question.
Vous devez vous connecter pour publier un commentaire.
Noter qu'un statique de la structure elle-même est différent d'un membre statique d'une structure. Alors que vous pouvez déclarer static struct variable:
vous ne pouvez pas définir un type struct avec un membre statique:
La raison pour cela est qu'en C, une structure est un type de déclaration d'un type dont un membre de la variable est toujours la même instance (j'. e. statique) pour de multiples instances de ce type est tout simplement ridicule. En C++, les structures sont en réalité des classes (ils ne diffèrent que dans la visibilité par défaut portée de membres), et en C++, le mot-clé static signifie quelque chose d'autre dans ce cas. Il désigne une méthode de classe - mais puisque C n'a pas de classes et de méthodes, cela ne fait pas de sens et n'est pas valide en C.
Leçon apprise: C++ n'est pas C.
C++
n'est pas un sur-ensemble, vous devez fournir quelque chose de possible en C qui est impossible en C++, pas l'inverse.static
mot-clé déjà prouve que.static
que C ne le sont pas. Ceci prouve avec certitude que C n'est pas un sur-ensemble de C++. Mais l'inverse est toujours en question.this
pointeur et toutes les variables d'instance à partir d'une fonction membre statique?static
en C signifie:En C++, il y a aussi un autre sens:
Corriger/juridique:
À l'aide de l'exemple ci-dessus, cela signifie que
THE_STATIC_VARIABLE
aura de stockage statique. Les suivantes sont équivalentes:Un
B
C'est-à-dire, chaque traduction qui voit
THE_STATIC_VARIABLE
définition obtiendrez sa propre copie.Si vous voulez le même effet qu'un statique membre C++, vous devez le déclarer dans un autre champ d'application -- en dehors d'une structure de déclaration:
Maintenant nous avons vraiment exactement comme en C++.