タグ

volatileに関するoka_Elizabethのブックマーク (2)

  • EXP05-C. const 修飾をキャストではずさない

    EXP05-C. const 修飾をキャストではずさない ポインタ型のオブジェクトに対するconst修飾をキャストしてはずさないこと。const 修飾をキャストして外すと、ポインタによって参照されるオブジェクトをプログラムで変更できるようになり、未定義の動作となる可能性がある。C 標準の附属書 J 「未定義の動作」の 64 を参照すること。 C 標準 [ISO/IEC 9899:2011] の脚注には以下のように記載されている (セクション 6.7.3, para. 4): 処理系は、volatileでないconstオブジェクトを、読み取り専用記憶域に置いてもよい。さらに、処理系はそのアドレスが使われないならば、そのようなオブジェクトに記憶域を割り付けなくてもよい。 違反コード 以下のコード例の remove_spaces() 関数は、引数として文字列へのポインタ str および文字列長

    EXP05-C. const 修飾をキャストではずさない
  • volatileで最適化を抑制する - 職業としてのプログラミング

    C言語やC++,Javaにはvolatileという修飾子があります。組み込み系ソフトウェアやマルチスレッドのアプリケーションを書いている方にとっては、なじみ深い存在ですが、そうでない方にはあまり縁がないのかもしれません。しかし、volatileの使い方や存在意義を知らないままコーディングを行うと、思わぬバグを引き起こす場合があります。今回は、そのvolatileキーワードについて簡単に説明したいと思います。 volatileは初期のCであるK&Rには含まれていませんでしたが、ANSI C(C89)以降のC標準規格にはconstと一緒に含まれるようになりました(constとvolatileをあわせてcv修飾子と呼ぶこともあります)。一般的なCなら必ず備えている修飾子です。 volatile修飾子の意味ですが、「プログラミング言語C ANSI規格準拠」によると、 volatileの目的は,黙っ

  • 1