Pouvons-nous utiliser static et volatile ensemble en C ?
Pouvons-nous utiliser static et volatile ensemble en C ?

Vidéo: Pouvons-nous utiliser static et volatile ensemble en C ?

Vidéo: Pouvons-nous utiliser static et volatile ensemble en C ?
Vidéo: Bibliothèque statique 2024, Novembre
Anonim

Statique les variables conservent leur valeur entre les appels de fonction. Volatil variables (ce qui n'est pas le contraire de statique ) sommes utilisé lorsqu'une variable est utilisé à la fois à l'intérieur d'un ISR (routine de service d'interruption) et à l'extérieur de celui-ci. Volatil indique au compilateur de toujours charger une variable à partir de la RAM plutôt que de la mettre en cache dans un registre CPU.

De même, on peut se demander: pouvons-nous utiliser ensemble statique et volatile ?

Même si tu accéder à un statique valeur à travers plusieurs threads, chaque thread pouvez avoir sa copie en cache locale ! Pour éviter cela vous pouvez déclarer la variable comme statique volatile et ça volonté forcer le thread à lire à chaque fois la valeur globale. Cependant, volatil ne remplace pas une synchronisation correcte !

De même, pourquoi utilise-t-on volatile en C ? C's volatile mot-clé est un qualificateur qui est appliqué à une variable lorsqu'elle est déclarée. Il indique au compilateur que la valeur de la variable peut changer à tout moment - sans qu'aucune action ne soit prise par le code que le compilateur trouve à proximité. Les implications de ceci sont assez sérieuses.

Considérant cela, que signifie static volatile en C ?

statique fait référence à la portée de la variable. Si la variable est globale, cela signifie que la portée est limitée au fichier source dans lequel elle a été déclarée. Si la variable est locale à une fonction, cela signifie que la mémoire utilisée pour contenir cette variable est dans la mémoire allouée statiquement de l'application.

Peut-on utiliser const avec volatile en C ?

Oui. Une variable pouvez être déclaré à la fois volatil et constant dans C . Const le modificateur ne permet pas de changer la valeur de la variable par un programme interne. Mais cela ne signifie pas que la valeur de const La variable ne doit pas être modifiée par un code externe.

Conseillé: