連休とか法事とかやってるあいだに、nfc-smart-tagのターゲット実装が追加されたようだ。
やはり、間に合わなかったか(私が)。
まあ、まだ見ていないのだがね。
ちょっとだけdiffを見ていて、気になったというか、どうなんだったっけ、というのがあった。
NFCとはまったく関係ない箇所だ。
static const。
TgInitTarget (As、はない)の実装らしき関数があるのだが、固定パラメータをstatic constで定義していたのだ。
うーん、私だったらconstだなあ、と思いましてね。
static変数であれば、ヒープの方に置かれるだろう。
初期値があるなら、初期値ありヒープへ。
const変数であれば、constなのでROM領域へ置かれるだろう。
値が変更されないので、プログラムと同じ扱いにすることが多いと思う。
プログラムは、プログラム領域だろう。
constと一緒で、ROMなりFLASHなり、基本的に書き換えられない領域だと思う。
私が使ってきた環境で、ROMよりもRAMの方が多い、という環境はなかったのでそう思っているが、RAMの方が広ければそっちに展開するのかもしれん(MMUがなくてもやるのかしら)。
Linuxのinitramfsみたいな展開の仕方や、kernelの展開もあるだろうが、まあそれは別扱いだ。
nfc-smart-tagでstatic constがあったのは、関数の中。
constはわかるのだけど、staticはなくてもなあ・・・。
と思ったが、コンパイラによって色々あるのかもしれん。
私は、むかし関数内にstatic変数を使ってたらコンパイラが展開するときに失敗するという現象でかなりはまり込んだことがあるので、やらなくなった。
なのでまあ、そういう書き方がいいこともあるのかもしれん、と記憶にだけとどめておこう。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。