現在、私はマイクロコントローラのライブラリを書いています。ほとんどのマイクロコントローラには、RAMよりも多くのフラッシュメモリがあります。私の質問は、ハードウェアやマイクロコントローラに関連するものではありません、私はラムの使用を減らすことができるだけ重要です。私は私の問題を例で説明します。C++プライベートクラスのフィールドをインライン化する方法は?
MyClass.h
class myClass
{
public:
myClass(int _pinA, int _pinB)
: pinA{_pinA}, pinB{_pinB} {};
void doSomething(); //for example turnOn(pinB);
private:
const int pinA, pinB;
};
main.cppに
int main()
{
myClass object(2,3);
object.doSomething();
return 0;
}
コンパイラがターンオン(PINB)を参照のであれば、それはPINBの値とPINBを置き換える必要があります(前処理)。あなたはdefineを使うなら達成できますが、私の場合は使えません。
ピン変数は、オブジェクトが存続している限りRAMに格納されます。コンパイラがpinAまたはpinBの値をすべてペーストするようにすることは可能ですか?このようにして、バールはフラッシュ(プログラム)メモリに格納されます。
ありがとうございます!
私はあなたの質問を理解していません。コードに "貼り付け"られる定数。しかし、実行時にRAM(またはCPUレジスタ)にロードする必要があります。それ以外の場合、CPUはCPUにアクセスできません。 – MotKohn
静的オブジェクトを使用しますか?テンプレートを作成しますか?注:これらのタイプの質問は、通常OPがあまりにも "賢い"と人工的な問題を作り出そうとしているために起こります。不必要な複雑さを加えないでください。 –
'myClass'は2つの整数パラメータを取るテンプレートにすることができます。 –