重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

以下のような構造体があったとする。
-(1) -----------------------------
 typedef volatile struct ABC{
   char x;
   char y;
 }stABC;
-(2) ----------------------------- 
 typedef struct ABC{
   volatile char x;
   volatile char y;
 }stABC;
---------------------------------

■質問
 -------------
  stABC abc;
  abc.x // ←volatileは有効?
  abc.y // ←volatileは有効?
 -------------
・このとき、メンバx,y は(1)/(2)の構造体型宣言どちらでも
 同じ意味合いになっているのでしょうか。
 ※特に(1)の場合、volatileは有効になっているのでしょうか。
・ビットフィールド時も同じと考えて問題ないでしょうか。
  (1)typedef volatile struct ABC{
     char x: 1 ;
     char x: 7 ;
   }stABC;
  (2)typedef struct ABC{
     volatile char x: 1 ;
     volatile char x: 7 ;
   }stABC;

A 回答 (1件)

> ・このとき、メンバx,y は(1)/(2)の構造体型宣言どちらでも


>  同じ意味合いになっているのでしょうか。

同じ意味合いではありませんが、volatileが効いているかどうかという意味では同じです。

> ・ビットフィールド時も同じと考えて問題ないでしょうか。

一応そうです。
ただし、Cの場合、ビットフィールドにcharを使えるかどうかは処理系定義です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!