Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1753 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [resolu] [C] [GCC] static volatile variable et warning (ou pas)

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu] [C] [GCC] static volatile variable et warning (ou pas)

n°2369480
rat de com​bat
attention rongeur méchant!
Posté le 26-11-2020 à 18:24:49  profilanswer
 

Ami(e)s du C Bonsoir :hello: ,
 
j'ai remarqué un truc que je ne comprend pas, quelqu'un pour me dire ce qui se passe?
 
J'ai besoin d'une variable globale pour passer des infos entre une ISR et le programme principal (pour µC). Je ne veux pas que cette variable soit accessible depuis un autre fichier (je considère que ça fait partie d'un code propre de limiter le scope de ses variables au maximum).
 
Donc:
1) ->volatile
2) ->static
 
Pour l'instant cette variable est juste déclarée mais utilisée nulle part:

Code :
  1. #include <stdbool.h>
  2. ...
  3. static volatile bool flag_write=false;


Je m'attendais à un warning "defined but not used" mais non, pas de warning. Par contre si je vire le "volatile" j'ai bien le warning.
 
Y a un truc qui m'échappe là. :??:  Pourquoi je n'ai pas de warning avec "volatile"? Est-ce que "volatile" annule le "static"?
 
avr-gcc (GCC) 5.4.0


Message édité par rat de combat le 28-11-2020 à 11:11:28
mood
Publicité
Posté le 26-11-2020 à 18:24:49  profilanswer
 

n°2369492
kajoux
Posté le 26-11-2020 à 22:05:01  profilanswer
 

Le contraire serait apparemment un bug, qui était présent dans GCC 4.8 : https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57258
La raison est :

Citation :

a volatile variable is only unused if it is not
accessed, otherwise code will be generated for
using it
following the semantics of the abstract
machine

n°2369638
rat de com​bat
attention rongeur méchant!
Posté le 28-11-2020 à 11:10:59  profilanswer
 

Merci pour le lien. :jap:  
 
Je pense avoir compris. :o

n°2370373
Ivanovitch
I ARE VERY SKILL
Posté le 05-12-2020 à 11:45:28  profilanswer
 

le qualifier volatile signifie entre autres que la variable peux être modifiée sans connaissance du compilateur (par exemple si elle est mappée sur un registre)
donc c'est normal qu'il ne te donne pas le warning car... il sais pas ^^

 

ah sinon, pour une var partagée entre une isr et le contexte normal, oublie pas d'y faire accès dans une section critique (disable/enable interrupt) si les manipulations que tu fait dessus ne sont pas atomiques.
(= pas une seule instruction = possible d'etre interrompu par une isr, ce qui inclus l'isr qui manipule la même var ! nice bugs en perspective :D )


Message édité par Ivanovitch le 05-12-2020 à 11:53:50
n°2370407
rat de com​bat
attention rongeur méchant!
Posté le 05-12-2020 à 17:51:41  profilanswer
 

Oui je sais pour le atomic, merci pour le rappel.

n°2370535
kajoux
Posté le 07-12-2020 à 13:50:04  profilanswer
 

Pour info (point 2) : https://gitlab.gnome.org/GNOME/glib/-/tags/2.67.1
Le lien donné (dans le lien ci-dessus) en contient plein d'autres, avec à priori pas mal de choses intéressantes (j'ai survolé vraiment très vite).
Ne pas se laisser déconcerter par le "No" sur la page en question !  :D


Message édité par kajoux le 07-12-2020 à 13:51:50

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [resolu] [C] [GCC] static volatile variable et warning (ou pas)

 

Sujets relatifs
Récupérer 2 élément à part dans des variable à partir d'un liste.[JAVA FX] Actualiser une Variable pendant une compilation !
php - MySql - VariableValeur dans une variable -> la commande Unix ne fonctionne plus
Membre non static en pointeur sur fonction pour callbackextraire dans une variable le contenu d'une structure
Twig -> Utiliser une variable comme nom partiel d'une autre[Script réseau] monter lecteur reseau avec variable
[BASH] bad substitution sur formatage variableconcaténer nom de tableau et variable
Plus de sujets relatifs à : [resolu] [C] [GCC] static volatile variable et warning (ou pas)


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR