Si je l'ai fait :
struct whatever {
int data;
};
volatile whatever test;
sera test.data
être volatile aussi ?
Si je l'ai fait :
struct whatever {
int data;
};
volatile whatever test;
sera test.data
être volatile aussi ?
Une autre question peut être posée (ou simplement une autre façon d'aborder la question initiale) :
const
faire en sorte que tous ses membres const
?Si je l'ai fait :
struct whatever { int data; };
const whatever test;
Est-ce que test.data sera const
aussi ?
Ma réponse est : Oui. Si vous déclarez un objet de type whatever
avec const
alors tous ses membres seront const
trop
De même, si vous déclarez un objet de type whatever
avec volatile
alors tous ses membres seront volatile
aussi, tout comme si vous déclarez l'objet avec const
tous ses membres seront const
aussi.
const
y volatile
sont les deux faces d'une même pièce ; elles sont telles que la Norme les désigne souvent sous le nom de cv-qualifiers
.
Citation de la norme ($7.1.5.1/8)
[Note : le volatile est un indice pour le mise en œuvre pour éviter une optimisation agressive impliquant l'objet parce que la valeur de l'objet pourrait être modifié par des moyens indétectables par une mise en œuvre. Voir 1.9 pour une sémantique sémantique détaillée. En général, la sémantique de volatile est censée être la même en C + + qu'elle ne l'est en C. ]
Cela signifie que si votre objet est une instance d'un struct, alors le compilateur ne peut pas éviter une optimisation agressive impliquant l'objet , sauf si il évite l'optimisation agressive de chacun de ses membres. (Sinon, comment éviter l'optimisation impliquant l'objet).
Sujet connexe :
De : http://msdn.microsoft.com/en-us/library/145yc477%28v=vs.80%29.aspx
Pour déclarer l'objet pointé par le pointeur comme const ou volatile, utilisez une déclaration de la forme :
const char *cpch;
volatile char *vpch;
Pour déclarer la valeur du pointeur - c'est-à-dire l'adresse réelle stockée dans le pointeur - comme const ou volatile, utilisez une déclaration de la forme :
char * const pchc;
char * volatile pchv;
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.