アカウント名:
パスワード:
その結果定数メモリへの書き込みが発生するのがバグ
constはその領域が定数メモリ(ROM)である事を宣言するものではないのでキャストの結果書き込みが発生しても、それはプログラマが書いた通りの挙動。
例えばBIOS ROMがFlash Memoryだとして、普段は読み出し前提でconstを付けてるけどBIOS更新用の関数内だけはあえて非constにして書き換えを出来るようにしたとしてそれはバグでもなんでもないわけです。
# そんな書き方をしたソースじゃ後でメンテで死ぬ、という話は別問題
現実には定数を書き換え不可能領域に配置するコンパイラ/リンカはありふれているわけで、仕様としてはどっちにするのか、それとも現状のまま「仕様としては定めない、実装依存」とするのかという話になりそう
「普段はconstだけど限られた特定の場合だけ書き換えたい」なら「書き換えが必要な処理だけ独立した別processとかにしろや」と思う
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日本発のオープンソースソフトウェアは42件 -- ある官僚
キャストでconstを外すのがバグではなく (スコア:1)
その結果定数メモリへの書き込みが発生するのがバグ
Re: (スコア:0)
constはその領域が定数メモリ(ROM)である事を宣言するものではないので
キャストの結果書き込みが発生しても、それはプログラマが書いた通りの挙動。
例えばBIOS ROMがFlash Memoryだとして、普段は読み出し前提でconstを付けてるけど
BIOS更新用の関数内だけはあえて非constにして書き換えを出来るようにしたとして
それはバグでもなんでもないわけです。
# そんな書き方をしたソースじゃ後でメンテで死ぬ、という話は別問題
Re:キャストでconstを外すのがバグではなく (スコア:0)
現実には定数を書き換え不可能領域に配置するコンパイラ/リンカはありふれているわけで、仕様としてはどっちにするのか、それとも現状のまま「仕様としては定めない、実装依存」とするのかという話になりそう
「普段はconstだけど限られた特定の場合だけ書き換えたい」なら「書き換えが必要な処理だけ独立した別processとかにしろや」と思う