Le Concept de “auto” clé en c
Pourriez-vous svp me donner le concept exact du mot-clé "auto" dans un programme C.
Quand j'ai traversé un livre "de Profondeur C secrets" , a obtenu la citation ci-dessous.
Le mot clé auto est apparemment
inutile. Il n'est significatif que pour un
le compilateur écrivain de faire une entrée dans un
symbole de la table—il est dit que ce stockage est
attribués automatiquement sur l'entrée de
le bloc (par opposition à l'globales statiques
l'allocation ou l'allocation dynamique sur
le tas). L'Auto n'est pas pertinent à
d'autres programmeurs, puisque vous obtenez l'en
par défaut.
Dans C++0x auto a un sens complètement différent. en.wikipedia.org/wiki/C%2B%2B0x#Type_inference
C++ n'est pas la même langue que C. Qui n'a rien à voir avec la question.
C'est pourquoi il est un commentaire Cody, pas de réponse.
Double Possible de Où est le C auto mot-clé utilisé?
C++ n'est pas la même langue que C. Qui n'a rien à voir avec la question.
C'est pourquoi il est un commentaire Cody, pas de réponse.
Double Possible de Où est le C auto mot-clé utilisé?
OriginalL'auteur Renjith G | 2011-01-14
Vous devez vous connecter pour publier un commentaire.
auto
n'est pas un type de données. C'est une classe de stockage prescripteur, commestatic
. C'est fondamentalement à l'opposé destatic
lorsqu'il est utilisé sur les variables locales et indique que la variable de la durée de vie est égale à sa portée (par exemple: lorsqu'elle est hors de portée, il est automatiquement détruit).Vous n'avez jamais besoin de spécifier
auto
que les seuls endroits que vous êtes autorisé à l'utiliser c'est aussi la valeur par défaut.int foo() {int *p; {int i = 42; p = &i} return *p;}
non conforme?Le C90 spec, dans le §6.1.2.4, dit ceci à propos de stockage automatique de la durée: "le stockage est assuré d'être réservés à une nouvelle instance d'un tel objet sur chaque entrée normale dans le bloc avec lequel il est associé ... de Stockage de l'objet n'est plus garanti pour être réservés lors de l'exécution du bloc se termine en aucune façon." Je n'ai pas de copie de la C99 spec, mais il semble peu probable qu'ils auraient changer cela.
OriginalL'auteur Laurence Gonsalves
Il pourrait être utile dans C89 où vous avez implicite de l'int de la règle.
Mais ensuite, il vous suffit d'écrire directement
int
au lieu deauto
. C99 n'est pas implicite de l'int règle, pas plus. Donc je ne pense pasauto
a aucun but réel plus. C'est un "défaut" de stockage spécificateur.auto
peut être utilisé, il est aussi la valeur par défaut, impliciteint
type ou pas.OriginalL'auteur Johannes Schaub - litb
Vous obtenez le
auto
comportement par défaut lorsque vous déclarez une variable, par exemple -int i = 0;
Cependant vous faire la même chose en spécifiant explicitementauto int i = 0
qui n'est pas nécessaire.OriginalL'auteur cpx
Comme l'a dit
auto
est la valeur par défaut pour les variables dans la portée de la fonction en C. La seule utilisation que j'ai eu pour le mot-clé est dans les macros. Pour une macro qui effectue une déclaration de variable, vous pouvez parfois avoir besoin pour s'assurer que la variable n'est pas déclaréestatic
ou dans le fichier de la portée. Ici leauto
mot-clé vient à portée de main.Cela a été particulièrement utile pour C++ où l'on pouvait abus le constructeur/destructeur de mécanisme pour faire de la portée lié à la gestion des ressources. Depuis le
auto
mot-clé est en train de changer son sens à quelque chose de complètement différent en C++, cette utilisation n'est plus possible.OriginalL'auteur Jens Gustedt
Je trouve cette citation très discutable. Le niveau logique d'un compilateur n'a rien à voir avec le niveau logique du langage compilé, même lorsque les deux langues sont les mêmes. Je suis peut-être mauvaise sur la fantaisie, mais je ne peux vraiment pas imaginer comment le fait d'avoir ou non un certain mot-clé peut être utile pour un compilateur, mais pas pour un programme général, en particulier dans les "C", où vous ne pouvez pas manipuler directement les mots clés ou de toute forme de code de toute façon et vous avez à réfléchir tout sur des données car, en "C", le code et les données sont deux concepts distincts.
Mon sauvage supposition est que l'auto était là à l'origine, parce qu'il n'était pas facultative mais obligatoire, plus tard, lorsque la langue a évolué et il n'était pas plus nécessaire qu'il restait encore à cause de raisons de compatibilité descendante avec du code C existant.
OriginalL'auteur 6502
Supposons que j'ai une fonction retournant une sorte de alambiqué pointeur vers une structure complexe ou, comme je suis en train d'élaborer une fonction qui pourrait être de retour différentes structures, je voudrais, dans C:
auto myautoptr=This_Function_that_returns_some_pointer_type();
OriginalL'auteur Leslie Satenstein