volatileについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
うしお
記事: 56
登録日時: 14年前

volatileについて

#1

投稿記事 by うしお » 14年前

株式会社きじねこ様のホームページ、
http://www.kijineko.co.jp/tech/cpptempl ... ndian.html
にて、エンディアンを変換するコードを見つけました。
以下の小さなテンプレート関数です。

コード:

template<class T>
T reverse_endian(T value)
{
  char volatile* first = reinterpret_cast<char volatile*>(&value);
  char volatile* last = first + sizeof(T);
  std::reverse(first, last);
  return value;
}
しかしながら、この関数になぜvolatile修飾子が必要なのか理解できません。
どなたかご教示いただけましたら幸いです。

たかぎ
記事: 328
登録日時: 14年前
住所: 大阪
連絡を取る:

Re: volatileについて

#2

投稿記事 by たかぎ » 14年前

不要ですね。
不確かな記憶をたどると、以前valueを参照渡しにしていて、volatile付きの実引数を受けるとキャストに失敗したような気がします。
ただ、volatile付きのものを参照渡しでもらうと、それはそれでいろいろ問題が出るのでやめました。
よって、現在のコードでは不要です。

たかぎ
記事: 328
登録日時: 14年前
住所: 大阪
連絡を取る:

Re: volatileについて

#3

投稿記事 by たかぎ » 14年前

修正してきました。

アバター
うしお
記事: 56
登録日時: 14年前

Re: volatileについて

#4

投稿記事 by うしお » 14年前

たかぎさん、ご回答、修正ありがとうございます。
修正後の関数を使っていきたいと思います^-^

閉鎖

“C言語何でも質問掲示板” へ戻る