Discussion

On peut faire les critiques suivantes :
  1. auto ne peut servir que pour les variables locales, mais si on ne le met pas, il est pris par défaut. Conclusion : il ne sert à rien.

  2. static sert à deux choses très différentes : il permet de rendre statique une variable locale, et c'est une utilisation légitime, mais il sert aussi à cacher à l'éditeur de liens les variables globales. On rappelle que par défaut (c'est à dire sans le mot-clé static,) les variables globales sont connues de l'éditeur de liens. Il aurait mieux valu faire l'inverse : que par défaut les variables globales soient cachées à l'éditeur de liens, et avoir un mot-clé (par exemple export), pour les lui faire connaître.

  3. register a été introduit dans le langage pour optimiser les programmes. Avec les techniques modernes de compilation, il ne sert à rien car le compilateur est mieux à même que le programmeur d'allouer les registres de la machine de manière efficace. Ne pas oublier en outre, qu'il y a une contrainte attachée à l'utilisation de variables register : l'impossibilité de leur appliquer l'opérateur &.

  4. extern et typedef n'ont rien à voir avec les classes de mémoire : ils ne sont là que pour des raisons syntaxiques.

Matthieu Moy 2017-02-08