Code Aufräumen/Verbessern, Speicherplatz freigeben

Man kann Variablen mit einem begrenzten Wertebereich erzeugen.
Ob dir das schmeckt, oder in deine Anwendung passt, überlasse ich ganz dir.

Aus meiner Wühlkiste:


template<typename Type, Type min, Type max>
class Begrenzt
{
  static_assert(min<max,"min muss kleiner als max sein");

  private:
  Type value;

  public:
  Begrenzt(const Type value)
  {
    *this = value;
  }
  
  Type operator =(const Type value)
  {
    return this->value=value<min?min:(value>max?max:value);
  }
  
  operator Type() const
  {
    return value;
  }
};

using MeineBegrenzteVariable = Begrenzt<byte,20,240>;
MeineBegrenzteVariable begrenzteVariable {42};

// Alternativ;
// Begrenzt<byte,20,240> begrenzteVariable = 42;

void setup() 
{
  Serial.begin(9600);

  Serial.println(begrenzteVariable);
  begrenzteVariable = 12;
  Serial.println(begrenzteVariable);
  begrenzteVariable = 250;
  Serial.println(begrenzteVariable);
  begrenzteVariable = 25;
  Serial.println(begrenzteVariable);
  Serial.println(begrenzteVariable+3);
  Serial.println(begrenzteVariable = 244);
  // Serial.println(begrenzteVariable = 4711); // warning: unsigned conversion from 'int' to 'unsigned char' changes value from '4711' to '103' [-Woverflow]
}

void loop() {}
1 Like