1

マイクロコントローラー/センサーデバイスのアプリケーションに取り組んでいます。私の質問は、名前付き定数を他の場所から参照できるように格納する最もメモリ効率の良い方法は何ですか? 理想的には、同じ値を RAM/ROM に何度も格納することは避けたいと考えています。明らかな選択肢は

  1. #define CONSTANT 0
  2. extern int CONSTANT = 0;
  3. const int CONSTANT = 0;
  4. (3.と4.の混合)
  5. enum ...(複数の定数の場合)

繰り返しますが、これらの値を何度もメモリに保存することは避けたいと思います。だから私が持っているなら

if (CONSTANT == x)
{
    ...
}
...
y = CONSTANT;

目標は、CONSTANT が 2 回格納されるのを防ぐことです。おそらく、これはコンパイラの最適化の問題であるか、ポインタを保存してそこから読み取る必要があり、そもそも複数のコピーを保存するよりも効率が悪いため私が考えていることは不可能です。

4

2 に答える 2

1

どちらの場合も#defineenumコンパイラは整数定数を生成された命令にコーディングできます。それもできるかもしれませんがconst int、それはコンパイラの最適化機能に依存します。externほとんどの場合、アドレスを参照する必要があります。つまり、値は別の場所にあり、メモリを占有します。

はい、定数は複数回格納されますが、複数回格納される定数へのポインタよりも望ましいです。

于 2013-06-07T21:48:43.913 に答える